public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 00/10] c-family,libstdc++: P1642 and related changes
@ 2022-09-30 16:45 Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 01/10] libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626] Arsen Arsenović
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

Hi,

This patchset:
- Implements the P1642 WG21 paper, with a fair few extensions,
- Fixes libstdc++' build system on systems --without-headers,
- Ports (a large chunk of) the libstdc++ testsuite to freestanding, and
- Changes the semantics of `int main' in freestanding (!!).

Thanks,

Arsen Arsenović (7):
  libstdc++: Filter out unconditional <stdio.h> default include
  libstdc++: Mark headers that must be hosted as such [PR103626]
  c-family: Implement new `int main' semantics in freestanding
  libstdc++: Rework how freestanding install works [PR106953]
  libstdc++: Make some tests work on freestanding [PR103626]
  libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626]
  libstdc++: Disable hosted-only tests [PR103626]

Jonathan Wakely (3):
  libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626]
  libstdc++: Adjust precompiled headers for freestanding
  libstdc++: Add effective-target 'hosted' for testsuite [PR103626]

 gcc/c-family/c-common.cc                      |   6 +
 gcc/c-family/c-common.h                       |  10 +
 gcc/c/c-decl.cc                               |   4 +-
 gcc/c/c-objc-common.cc                        |   9 +-
 gcc/cp/cp-tree.h                              |  12 +-
 gcc/doc/invoke.texi                           |  20 +-
 .../freestanding-main-implicitly-returns.C    |   5 +
 gcc/testsuite/g++.dg/no-builtin-main.C        |   5 +
 gcc/testsuite/gcc.dg/c11-noreturn-4.c         |   2 +-
 .../freestanding-main-implicitly-returns.c    |   5 +
 gcc/testsuite/gcc.dg/inline-10.c              |   2 +-
 gcc/testsuite/gcc.dg/no-builtin-main.c        |   5 +
 gcc/testsuite/gcc.dg/noreturn-4.c             |   2 +-
 libstdc++-v3/acinclude.m4                     |   2 +-
 libstdc++-v3/configure                        |   2 +-
 libstdc++-v3/configure.ac                     |   9 +
 libstdc++-v3/include/Makefile.am              | 303 ++++----
 libstdc++-v3/include/Makefile.in              | 657 +++++++++---------
 libstdc++-v3/include/bits/algorithmfwd.h      |   4 +
 libstdc++-v3/include/bits/concept_check.h     |   2 +-
 libstdc++-v3/include/bits/ranges_algo.h       |   2 +
 libstdc++-v3/include/bits/requires_hosted.h   |  37 +
 libstdc++-v3/include/bits/stl_algo.h          |   2 +-
 libstdc++-v3/include/c_global/cmath           |   2 +
 libstdc++-v3/include/experimental/algorithm   |   2 +
 libstdc++-v3/include/experimental/any         |   2 +
 libstdc++-v3/include/experimental/array       |   2 +
 libstdc++-v3/include/experimental/buffer      |   2 +
 libstdc++-v3/include/experimental/chrono      |   2 +
 libstdc++-v3/include/experimental/deque       |   2 +
 libstdc++-v3/include/experimental/executor    |   2 +
 libstdc++-v3/include/experimental/filesystem  |   2 +
 .../include/experimental/forward_list         |   2 +
 libstdc++-v3/include/experimental/functional  |   2 +
 libstdc++-v3/include/experimental/internet    |   2 +
 libstdc++-v3/include/experimental/io_context  |   2 +
 libstdc++-v3/include/experimental/iterator    |   2 +
 libstdc++-v3/include/experimental/list        |   2 +
 libstdc++-v3/include/experimental/map         |   2 +
 libstdc++-v3/include/experimental/memory      |   2 +
 .../include/experimental/memory_resource      |   2 +
 libstdc++-v3/include/experimental/net         |   2 +
 libstdc++-v3/include/experimental/netfwd      |   2 +
 libstdc++-v3/include/experimental/numeric     |   2 +
 libstdc++-v3/include/experimental/optional    |   2 +
 .../include/experimental/propagate_const      |   2 +
 libstdc++-v3/include/experimental/random      |   2 +
 libstdc++-v3/include/experimental/ratio       |   2 +
 libstdc++-v3/include/experimental/regex       |   2 +
 libstdc++-v3/include/experimental/scope       |   2 +
 libstdc++-v3/include/experimental/set         |   2 +
 libstdc++-v3/include/experimental/simd        |   2 +
 libstdc++-v3/include/experimental/socket      |   2 +
 .../include/experimental/source_location      |   2 +
 libstdc++-v3/include/experimental/string      |   2 +
 libstdc++-v3/include/experimental/string_view |   2 +
 .../include/experimental/system_error         |   2 +
 libstdc++-v3/include/experimental/timer       |   2 +
 libstdc++-v3/include/experimental/tuple       |   2 +
 .../include/experimental/unordered_map        |   2 +
 .../include/experimental/unordered_set        |   2 +
 libstdc++-v3/include/experimental/utility     |   2 +
 libstdc++-v3/include/experimental/vector      |   2 +
 libstdc++-v3/include/ext/algorithm            |   2 +
 libstdc++-v3/include/ext/bitmap_allocator.h   |   2 +
 libstdc++-v3/include/ext/cmath                |   2 +
 .../include/ext/codecvt_specializations.h     |   2 +
 libstdc++-v3/include/ext/debug_allocator.h    |   2 +
 libstdc++-v3/include/ext/enc_filebuf.h        |   2 +
 libstdc++-v3/include/ext/extptr_allocator.h   |   2 +
 libstdc++-v3/include/ext/functional           |   2 +
 libstdc++-v3/include/ext/malloc_allocator.h   |   2 +
 libstdc++-v3/include/ext/memory               |   2 +
 libstdc++-v3/include/ext/mt_allocator.h       |   2 +
 libstdc++-v3/include/ext/new_allocator.h      |   2 +
 libstdc++-v3/include/ext/numeric              |   2 +
 libstdc++-v3/include/ext/pod_char_traits.h    |   2 +
 libstdc++-v3/include/ext/pointer.h            |   7 +-
 libstdc++-v3/include/ext/pool_allocator.h     |   2 +
 libstdc++-v3/include/ext/random               |   2 +
 libstdc++-v3/include/ext/random.tcc           |   2 +
 libstdc++-v3/include/ext/rb_tree              |   2 +
 libstdc++-v3/include/ext/rc_string_base.h     |   2 +
 libstdc++-v3/include/ext/rope                 |   2 +
 libstdc++-v3/include/ext/ropeimpl.h           |   2 +
 libstdc++-v3/include/ext/slist                |   2 +
 libstdc++-v3/include/ext/sso_string_base.h    |   2 +
 libstdc++-v3/include/ext/stdio_filebuf.h      |   2 +
 libstdc++-v3/include/ext/stdio_sync_filebuf.h |   2 +
 libstdc++-v3/include/ext/string_conversions.h |   2 +
 libstdc++-v3/include/ext/throw_allocator.h    |   2 +
 libstdc++-v3/include/ext/vstring.h            |   2 +
 libstdc++-v3/include/ext/vstring.tcc          |   2 +
 libstdc++-v3/include/ext/vstring_fwd.h        |   2 +
 libstdc++-v3/include/ext/vstring_util.h       |   2 +
 libstdc++-v3/include/precompiled/extc++.h     |  17 +-
 libstdc++-v3/include/precompiled/stdc++.h     |  81 ++-
 libstdc++-v3/include/std/algorithm            |   4 +-
 libstdc++-v3/include/std/barrier              |   2 +
 libstdc++-v3/include/std/bitset               |   9 +-
 libstdc++-v3/include/std/charconv             |   4 +-
 libstdc++-v3/include/std/chrono               |   2 +
 libstdc++-v3/include/std/condition_variable   |   2 +
 libstdc++-v3/include/std/deque                |   2 +
 libstdc++-v3/include/std/execution            |   2 +
 libstdc++-v3/include/std/filesystem           |   2 +
 libstdc++-v3/include/std/forward_list         |   2 +
 libstdc++-v3/include/std/fstream              |   2 +
 libstdc++-v3/include/std/functional           |   3 +-
 libstdc++-v3/include/std/future               |   2 +
 libstdc++-v3/include/std/iomanip              |   2 +
 libstdc++-v3/include/std/ios                  |   2 +
 libstdc++-v3/include/std/iosfwd               |   2 +
 libstdc++-v3/include/std/iostream             |   2 +
 libstdc++-v3/include/std/istream              |   2 +
 libstdc++-v3/include/std/iterator             |   4 +
 libstdc++-v3/include/std/latch                |   2 +
 libstdc++-v3/include/std/list                 |   2 +
 libstdc++-v3/include/std/locale               |   2 +
 libstdc++-v3/include/std/map                  |   2 +
 libstdc++-v3/include/std/memory               |   2 +-
 libstdc++-v3/include/std/memory_resource      |   2 +
 libstdc++-v3/include/std/mutex                |   2 +
 libstdc++-v3/include/std/numeric              |   2 +-
 libstdc++-v3/include/std/ostream              |   2 +
 libstdc++-v3/include/std/queue                |   2 +
 libstdc++-v3/include/std/random               |   2 +
 libstdc++-v3/include/std/regex                |   2 +
 libstdc++-v3/include/std/semaphore            |   2 +
 libstdc++-v3/include/std/set                  |   2 +
 libstdc++-v3/include/std/shared_mutex         |   2 +
 libstdc++-v3/include/std/spanstream           |   2 +
 libstdc++-v3/include/std/sstream              |   2 +
 libstdc++-v3/include/std/stack                |   2 +
 libstdc++-v3/include/std/stacktrace           |   2 +
 libstdc++-v3/include/std/stop_token           |   2 +
 libstdc++-v3/include/std/streambuf            |   2 +
 libstdc++-v3/include/std/string               |   2 +
 libstdc++-v3/include/std/syncstream           |   2 +
 libstdc++-v3/include/std/system_error         |   2 +
 libstdc++-v3/include/std/thread               |   2 +
 libstdc++-v3/include/std/unordered_map        |   2 +
 libstdc++-v3/include/std/unordered_set        |   2 +
 libstdc++-v3/include/std/valarray             |   2 +
 libstdc++-v3/include/std/vector               |   2 +
 libstdc++-v3/include/std/version              | 100 +--
 libstdc++-v3/include/tr1/array                |   2 +
 libstdc++-v3/include/tr1/ccomplex             |   2 +
 libstdc++-v3/include/tr1/cctype               |   2 +
 libstdc++-v3/include/tr1/cfenv                |   2 +
 libstdc++-v3/include/tr1/cfloat               |   2 +
 libstdc++-v3/include/tr1/cinttypes            |   2 +
 libstdc++-v3/include/tr1/climits              |   2 +
 libstdc++-v3/include/tr1/cmath                |   2 +
 libstdc++-v3/include/tr1/complex              |   2 +
 libstdc++-v3/include/tr1/complex.h            |   2 +
 libstdc++-v3/include/tr1/cstdarg              |   2 +
 libstdc++-v3/include/tr1/cstdbool             |   2 +
 libstdc++-v3/include/tr1/cstdint              |   2 +
 libstdc++-v3/include/tr1/cstdio               |   2 +
 libstdc++-v3/include/tr1/cstdlib              |   2 +
 libstdc++-v3/include/tr1/ctgmath              |   2 +
 libstdc++-v3/include/tr1/ctime                |   2 +
 libstdc++-v3/include/tr1/ctype.h              |   2 +
 libstdc++-v3/include/tr1/cwchar               |   2 +
 libstdc++-v3/include/tr1/cwctype              |   2 +
 libstdc++-v3/include/tr1/fenv.h               |   2 +
 libstdc++-v3/include/tr1/float.h              |   2 +
 libstdc++-v3/include/tr1/functional           |   2 +
 libstdc++-v3/include/tr1/inttypes.h           |   2 +
 libstdc++-v3/include/tr1/limits.h             |   2 +
 libstdc++-v3/include/tr1/math.h               |   2 +
 libstdc++-v3/include/tr1/memory               |   2 +
 libstdc++-v3/include/tr1/random               |   2 +
 libstdc++-v3/include/tr1/regex                |   2 +
 libstdc++-v3/include/tr1/stdarg.h             |   2 +
 libstdc++-v3/include/tr1/stdbool.h            |   2 +
 libstdc++-v3/include/tr1/stdint.h             |   2 +
 libstdc++-v3/include/tr1/stdio.h              |   2 +
 libstdc++-v3/include/tr1/stdlib.h             |   2 +
 libstdc++-v3/include/tr1/tgmath.h             |   2 +
 libstdc++-v3/include/tr1/tuple                |   2 +
 libstdc++-v3/include/tr1/type_traits          |   2 +
 libstdc++-v3/include/tr1/unordered_map        |   2 +
 libstdc++-v3/include/tr1/unordered_set        |   2 +
 libstdc++-v3/include/tr1/utility              |   2 +
 libstdc++-v3/include/tr1/wchar.h              |   2 +
 libstdc++-v3/include/tr1/wctype.h             |   2 +
 .../17_intro/headers/c++1998/stdc++.cc        |   2 +
 .../headers/c++1998/stdc++_assert_neg.cc      |   1 +
 .../17_intro/tag_type_explicit_ctor.cc        |  32 +-
 .../17_intro/using_namespace_std_exp_neg.cc   |  53 +-
 .../17_intro/using_namespace_std_tr1_neg.cc   |  53 +-
 .../18_support/aligned_alloc/aligned_alloc.cc |   1 +
 .../headers/cstdlib/functions_std.cc          |   2 +
 .../testsuite/18_support/new_nothrow.cc       |   1 +
 .../testsuite/20_util/allocator/105975.cc     |   1 +
 .../testsuite/20_util/allocator/14176.cc      |   2 +
 .../testsuite/20_util/allocator/64135.cc      |   1 +
 .../testsuite/20_util/allocator/89510.cc      |   1 +
 .../testsuite/20_util/allocator/lwg3190.cc    |   1 +
 .../20_util/allocator/overaligned.cc          |   1 +
 .../20_util/allocator/rebind_c++20.cc         |   1 +
 .../allocator/requirements/constexpr.cc       |   5 +-
 .../requirements/explicit_instantiation/1.cc  |   1 +
 .../allocator/requirements/typedefs.cc        |   1 +
 .../allocator/requirements/typedefs_c++20.cc  |   5 +-
 .../testsuite/20_util/allocator/void.cc       |   1 +
 .../20_util/allocator_traits/header-2.cc      |   5 +-
 .../20_util/allocator_traits/header.cc        |   5 +-
 .../allocator_traits/members/92878_92947.cc   |   6 +-
 .../allocator_traits/members/pointers.cc      |   1 +
 .../allocator_traits/members/rebind_alloc.cc  |   2 +
 .../requirements/explicit_instantiation.cc    |   2 +
 .../allocator_traits/requirements/typedefs.cc |   1 +
 .../cons_virtual_derivation.cc                |   2 +
 libstdc++-v3/testsuite/20_util/bind/42593.cc  |   2 +
 .../testsuite/20_util/bitset/access/dr396.cc  |   2 +
 .../20_util/bitset/access/to_string.cc        |   2 +
 .../20_util/bitset/access/to_ullong.cc        |   2 +
 .../testsuite/20_util/bitset/cons/16020.cc    |   2 +
 .../20_util/bitset/cons/constexpr_c++23.cc    |   2 +
 .../testsuite/20_util/bitset/cons/dr1325-2.cc |   1 +
 .../testsuite/20_util/bitset/cons/dr396.cc    |   2 +
 .../20_util/bitset/debug/invalidation/1.cc    |   2 +
 .../testsuite/20_util/bitset/ext/15361.cc     |   2 +
 .../testsuite/20_util/bitset/ext/constexpr.cc |   2 +
 .../20_util/bitset/operations/13838.cc        |   2 +
 .../20_util/bitset/operations/96303.cc        |   2 +
 .../testsuite/20_util/bitset/version.cc       |   1 +
 .../20_util/enable_shared_from_this/56383.cc  |   1 +
 .../20_util/enable_shared_from_this/89303.cc  |   1 +
 .../enable_shared_from_this/members/assign.cc |   1 +
 .../enable_shared_from_this/members/const.cc  |   1 +
 .../enable_shared_from_this/members/reinit.cc |   1 +
 .../members/unique_ptr.cc                     |   1 +
 .../members/weak_from_this.cc                 |   1 +
 .../requirements/explicit_instantiation.cc    |   1 +
 libstdc++-v3/testsuite/20_util/forward/1.cc   |   1 +
 .../testsuite/20_util/forward/1_neg.cc        |   1 +
 libstdc++-v3/testsuite/20_util/function/1.cc  |   2 +
 libstdc++-v3/testsuite/20_util/function/10.cc |   1 +
 libstdc++-v3/testsuite/20_util/function/2.cc  |   2 +
 libstdc++-v3/testsuite/20_util/function/3.cc  |   2 +
 libstdc++-v3/testsuite/20_util/function/4.cc  |   2 +
 .../testsuite/20_util/function/43397.cc       |   2 +
 .../testsuite/20_util/function/48541.cc       |   2 +
 libstdc++-v3/testsuite/20_util/function/5.cc  |   2 +
 .../testsuite/20_util/function/58569.cc       |   2 +
 libstdc++-v3/testsuite/20_util/function/6.cc  |   2 +
 .../testsuite/20_util/function/60594.cc       |   1 +
 .../testsuite/20_util/function/65760.cc       |   1 +
 .../testsuite/20_util/function/69222.cc       |   1 +
 libstdc++-v3/testsuite/20_util/function/7.cc  |   2 +
 .../testsuite/20_util/function/77322.cc       |   1 +
 libstdc++-v3/testsuite/20_util/function/8.cc  |   2 +
 libstdc++-v3/testsuite/20_util/function/9.cc  |   2 +
 .../testsuite/20_util/function/91456.cc       |   1 +
 .../testsuite/20_util/function/assign/move.cc |   1 +
 .../20_util/function/assign/move_target.cc    |   1 +
 .../testsuite/20_util/function/cmp/cmp_neg.cc |   1 +
 .../testsuite/20_util/function/cons/55320.cc  |   1 +
 .../testsuite/20_util/function/cons/57465.cc  |   1 +
 .../testsuite/20_util/function/cons/70692.cc  |   1 +
 .../testsuite/20_util/function/cons/72820.cc  |   1 +
 .../20_util/function/cons/addressof.cc        |   1 +
 .../20_util/function/cons/callable.cc         |   1 +
 .../20_util/function/cons/deduction.cc        |   1 +
 .../20_util/function/cons/deduction_c++23.cc  |   1 +
 .../20_util/function/cons/lwg2774.cc          |   2 +
 .../testsuite/20_util/function/cons/move.cc   |   1 +
 .../20_util/function/cons/move_target.cc      |   1 +
 .../20_util/function/cons/noexcept.cc         |   2 +
 .../function/cons/non_copyconstructible.cc    |   1 +
 .../20_util/function/cons/refqual.cc          |   1 +
 .../20_util/function/invoke/forwarding.cc     |   1 +
 .../20_util/function/invoke/move_only.cc      |   1 +
 .../function/null_pointer_comparisons.cc      |   1 +
 .../requirements/explicit_instantiation.cc    |   1 +
 .../20_util/function/target_no_rtti.cc        |   1 +
 .../20_util/function_objects/83607.cc         |   1 +
 .../20_util/function_objects/mem_fn/adl.cc    |   1 +
 .../20_util/headers/bitset/synopsis.cc        |   2 +
 .../20_util/headers/cstdlib/functions_std.cc  |   1 +
 .../headers/functional/types_std_c++0x.cc     |   1 +
 .../20_util/headers/memory/types_std_c++0x.cc |   1 +
 .../testsuite/20_util/is_function/35637.cc    |   1 +
 .../requirements/typedefs_neg.cc              |   4 +-
 libstdc++-v3/testsuite/20_util/move/1.cc      |   1 +
 .../20_util/move_only_function/call.cc        |   1 +
 .../20_util/move_only_function/cons.cc        |   1 +
 .../20_util/move_only_function/move.cc        |   1 +
 .../20_util/move_only_function/version.cc     |   1 +
 .../testsuite/20_util/owner_less/cmp.cc       |   1 +
 .../testsuite/20_util/owner_less/noexcept.cc  |   1 +
 .../testsuite/20_util/owner_less/void.cc      |   1 +
 .../testsuite/20_util/pointer_safety/1.cc     |   1 +
 .../pointer_traits/requirements/typedefs.cc   |   2 +
 .../20_util/scoped_allocator/65279.cc         |   2 +
 .../20_util/scoped_allocator/69293_neg.cc     |   2 +
 .../scoped_allocator/construct_pair.cc        |   1 +
 .../20_util/scoped_allocator/dr2586.cc        |   2 +
 .../requirements/explicit_instantiation.cc    |   2 +
 .../20_util/shared_ptr/assign/assign.cc       |   1 +
 .../20_util/shared_ptr/assign/auto_ptr.cc     |   1 +
 .../20_util/shared_ptr/assign/auto_ptr_neg.cc |   1 +
 .../shared_ptr/assign/auto_ptr_rvalue.cc      |   1 +
 .../20_util/shared_ptr/assign/dr541.cc        |   1 +
 .../20_util/shared_ptr/assign/move.cc         |   1 +
 .../20_util/shared_ptr/assign/sfinae.cc       |   1 +
 .../20_util/shared_ptr/assign/shared_ptr.cc   |   1 +
 .../shared_ptr/assign/shared_ptr_neg.cc       |   1 +
 .../assign/unique_ptr_lvalue_neg.cc           |   1 +
 .../shared_ptr/assign/unique_ptr_rvalue.cc    |   1 +
 .../testsuite/20_util/shared_ptr/atomic/1.cc  |   1 +
 .../testsuite/20_util/shared_ptr/atomic/2.cc  |   1 +
 .../testsuite/20_util/shared_ptr/casts/1.cc   |   1 +
 .../20_util/shared_ptr/casts/reinterpret.cc   |   1 +
 .../20_util/shared_ptr/casts/rval.cc          |   1 +
 .../20_util/shared_ptr/comparison/42925.cc    |   1 +
 .../20_util/shared_ptr/comparison/86537.cc    |   1 +
 .../20_util/shared_ptr/comparison/cmp.cc      |   1 +
 .../shared_ptr/comparison/cmp_c++20.cc        |   1 +
 .../20_util/shared_ptr/comparison/dr1401.cc   |   1 +
 .../20_util/shared_ptr/comparison/less.cc     |   1 +
 .../20_util/shared_ptr/cons/39405.cc          |   1 +
 .../20_util/shared_ptr/cons/43820_neg.cc      |   1 +
 .../20_util/shared_ptr/cons/46910.cc          |   1 +
 .../20_util/shared_ptr/cons/51365.cc          |   1 +
 .../20_util/shared_ptr/cons/52924.cc          |   1 +
 .../20_util/shared_ptr/cons/55123.cc          |   1 +
 .../20_util/shared_ptr/cons/58659.cc          |   1 +
 .../20_util/shared_ptr/cons/58839.cc          |   1 +
 .../20_util/shared_ptr/cons/61036.cc          |   1 +
 .../20_util/shared_ptr/cons/79467.cc          |   1 +
 .../20_util/shared_ptr/cons/80229.cc          |   1 +
 .../20_util/shared_ptr/cons/alias-rval.cc     |   1 +
 .../20_util/shared_ptr/cons/alias.cc          |   1 +
 .../20_util/shared_ptr/cons/array.cc          |   1 +
 .../20_util/shared_ptr/cons/auto_ptr.cc       |   1 +
 .../20_util/shared_ptr/cons/auto_ptr_neg.cc   |   1 +
 .../testsuite/20_util/shared_ptr/cons/copy.cc |   1 +
 .../20_util/shared_ptr/cons/deduction.cc      |   1 +
 .../20_util/shared_ptr/cons/default.cc        |   1 +
 .../20_util/shared_ptr/cons/lwg2802.cc        |   1 +
 .../20_util/shared_ptr/cons/lwg3548.cc        |   1 +
 .../testsuite/20_util/shared_ptr/cons/move.cc |   1 +
 .../cons/noexcept_move_construct.cc           |   1 +
 .../20_util/shared_ptr/cons/nullptr.cc        |   1 +
 .../20_util/shared_ptr/cons/pointer.cc        |   1 +
 .../20_util/shared_ptr/cons/unique_ptr.cc     |   1 +
 .../shared_ptr/cons/unique_ptr_array.cc       |   1 +
 .../shared_ptr/cons/unique_ptr_deleter.cc     |   1 +
 .../cons/unique_ptr_deleter_ref_1.cc          |   1 +
 .../cons/unique_ptr_deleter_ref_2.cc          |   1 +
 .../20_util/shared_ptr/cons/void_neg.cc       |   1 +
 .../20_util/shared_ptr/cons/weak_ptr.cc       |   1 +
 .../20_util/shared_ptr/creation/36949.cc      |   1 +
 .../shared_ptr/creation/58594-no-rtti.cc      |   1 +
 .../20_util/shared_ptr/creation/58594.cc      |   1 +
 .../20_util/shared_ptr/creation/87278.cc      |   1 +
 .../shared_ptr/creation/92878_92947.cc        |   1 +
 .../20_util/shared_ptr/creation/99006.cc      |   1 +
 .../20_util/shared_ptr/creation/dr402.cc      |   1 +
 .../20_util/shared_ptr/creation/dr925.cc      |   1 +
 .../20_util/shared_ptr/creation/make.cc       |   1 +
 .../20_util/shared_ptr/creation/no_rtti.cc    |   1 +
 .../20_util/shared_ptr/creation/overwrite.cc  |   1 +
 .../20_util/shared_ptr/creation/private.cc    |   1 +
 .../shared_ptr/creation/single_allocation.cc  |   1 +
 .../creation/single_allocation_no_rtti.cc     |   1 +
 .../20_util/shared_ptr/creation/version.cc    |   1 +
 .../testsuite/20_util/shared_ptr/dest/dest.cc |   1 +
 .../testsuite/20_util/shared_ptr/hash/1.cc    |   1 +
 .../20_util/shared_ptr/misc/24595.cc          |   1 +
 .../20_util/shared_ptr/misc/42019.cc          |   1 +
 .../20_util/shared_ptr/misc/get_deleter.cc    |   1 +
 .../testsuite/20_util/shared_ptr/misc/swap.cc |   1 +
 .../20_util/shared_ptr/modifiers/reset.cc     |   1 +
 .../20_util/shared_ptr/modifiers/reset_neg.cc |   1 +
 .../shared_ptr/modifiers/reset_sfinae.cc      |   1 +
 .../20_util/shared_ptr/modifiers/swap.cc      |   1 +
 .../20_util/shared_ptr/modifiers/swap_neg.cc  |   1 +
 .../20_util/shared_ptr/observers/array.cc     |   1 +
 .../20_util/shared_ptr/observers/bool_conv.cc |   1 +
 .../20_util/shared_ptr/observers/get.cc       |   1 +
 .../shared_ptr/observers/owner_before.cc      |   1 +
 .../20_util/shared_ptr/observers/unique.cc    |   1 +
 .../20_util/shared_ptr/observers/use_count.cc |   1 +
 .../requirements/explicit_instantiation/1.cc  |   1 +
 .../requirements/explicit_instantiation/2.cc  |   1 +
 .../shared_ptr/requirements/weak_type.cc      |   1 +
 .../construct_at/95788.cc                     |   2 +
 .../testsuite/20_util/temporary_buffer.cc     |   2 +
 libstdc++-v3/testsuite/20_util/tuple/48476.cc |   1 +
 .../testsuite/20_util/tuple/cons/90700.cc     |   2 +
 .../testsuite/20_util/tuple/cons/96803.cc     |   2 +
 .../20_util/tuple/cons/allocator_with_any.cc  |   2 +
 .../20_util/tuple/cons/allocators.cc          |   2 +
 .../tuple/cons/constexpr_allocator_arg_t.cc   |   2 +
 .../testsuite/20_util/tuple/cons/deduction.cc |   2 +
 .../20_util/tuple/cons/explicit_construct.cc  |   2 +
 .../testsuite/20_util/tuple/p2321r2.cc        |   2 +
 .../unique_ptr/creation/92878_92947.cc        |   1 +
 .../20_util/unique_ptr/creation/array.cc      |   1 +
 .../20_util/unique_ptr/creation/array_neg.cc  |   1 +
 .../20_util/unique_ptr/creation/constexpr.cc  |   1 +
 .../unique_ptr/creation/for_overwrite.cc      |   1 +
 .../unique_ptr/creation/for_overwrite__neg.cc |   1 +
 .../20_util/unique_ptr/creation/single.cc     |   1 +
 .../20_util/uses_allocator/69293_neg.cc       |   2 +
 .../20_util/uses_allocator/92878_92947.cc     |   1 +
 .../uses_allocator/uninitialized_construct.cc |   2 +
 .../20_util/weak_ptr/comparison/cmp_neg.cc    |   1 +
 .../20_util/weak_ptr/cons/deduction.cc        |   1 +
 .../weak_ptr/cons/noexcept_move_construct.cc  |   1 +
 .../testsuite/20_util/weak_ptr/lock/1.cc      |   1 +
 .../weak_ptr/observers/owner_before.cc        |   1 +
 .../requirements/explicit_instantiation/1.cc  |   1 +
 .../requirements/explicit_instantiation/2.cc  |   1 +
 .../21_strings/basic_string/version.cc        |   1 +
 .../operations/contains/char/2.cc             |   1 +
 .../21_strings/c_strings/char/69626.cc        |   1 +
 .../char_traits/requirements/version.cc       |   1 +
 .../vector/requirements/version.cc            |   1 +
 .../requirements/base_classes.cc              |   2 +
 .../requirements/base_classes.cc              |   2 +
 .../requirements/base_classes.cc              |   2 +
 .../requirements/base_classes.cc              |   2 +
 .../24_iterators/istreambuf_iterator/92285.cc |   2 +
 .../istreambuf_iterator/cons/sentinel.cc      |   1 +
 .../requirements/base_classes.cc              |   2 +
 .../istreambuf_iterator/requirements/dr445.cc |   1 +
 .../requirements/base_classes.cc              |   2 +
 .../requirements/base_classes.cc              |   2 +
 .../25_algorithms/constexpr_macro.cc          |   1 +
 .../25_algorithms/equal/constrained.cc        |   1 +
 .../headers/cstdlib/functions_std.cc          |   1 +
 .../25_algorithms/inplace_merge/1.cc          |   3 +
 .../lexicographical_compare/constrained.cc    |   1 +
 .../25_algorithms/make_heap/movable.cc        |   1 +
 .../testsuite/25_algorithms/move/93872.cc     |   1 +
 .../25_algorithms/pstl/feature_test-4.cc      |   1 +
 .../25_algorithms/random_shuffle/1.cc         |   1 +
 .../25_algorithms/random_shuffle/moveable.cc  |   1 +
 .../requirements/explicit_instantiation/2.cc  |   1 +
 .../testsuite/25_algorithms/sort/35588.cc     |   3 +
 .../25_algorithms/stable_partition/1.cc       |   3 +
 .../stable_partition/constrained.cc           |   3 +
 .../stable_partition/mem_check.cc             |   3 +
 .../stable_partition/moveable.cc              |   3 +
 .../requirements/explicit_instantiation/2.cc  |   1 +
 .../explicit_instantiation/pod.cc             |   3 +
 .../testsuite/25_algorithms/stable_sort/1.cc  |   3 +
 .../testsuite/26_numerics/complex/2.cc        |   1 +
 .../26_numerics/headers/cstdlib/13943.cc      |   2 +
 .../26_numerics/headers/cstdlib/2190.cc       |   3 +
 .../26_numerics/headers/cstdlib/60401.cc      |   1 +
 .../26_numerics/headers/cstdlib/dr2192.cc     |   2 +
 .../26_numerics/headers/cstdlib/dr2192_neg.cc |   3 +
 .../26_numerics/headers/cstdlib/dr2735.cc     |   1 +
 .../headers/cstdlib/functions_std.cc          |   3 +
 .../26_numerics/headers/cstdlib/macros.cc     |   3 +
 .../26_numerics/headers/cstdlib/types_std.cc  |   3 +
 .../headers/cstdlib/types_std_c++0x.cc        |   3 +
 .../testsuite/26_numerics/lerp/version.cc     |   1 +
 .../testsuite/26_numerics/midpoint/version.cc |   1 +
 .../testsuite/27_io/basic_syncbuf/2.cc        |   1 +
 .../testsuite/27_io/basic_syncstream/2.cc     |   1 +
 libstdc++-v3/testsuite/27_io/fpos/14320-1.cc  |   1 +
 libstdc++-v3/testsuite/27_io/fpos/14320-2.cc  |   2 +
 libstdc++-v3/testsuite/27_io/fpos/14320-3.cc  |   2 +
 libstdc++-v3/testsuite/27_io/fpos/14320-4.cc  |   2 +
 .../testsuite/27_io/spanstream/version.cc     |   1 +
 .../testsuite/29_atomics/atomic/lwg3220.cc    |   4 +
 .../29_atomics/atomic/operators/51811.cc      |   3 +
 .../29_atomics/atomic/wait_notify/1.cc        |   1 +
 .../29_atomics/atomic/wait_notify/102994.cc   |   1 +
 .../29_atomics/atomic/wait_notify/2.cc        |   1 +
 .../29_atomics/headers/stdatomic.h/version.cc |   3 +
 .../testsuite/30_threads/barrier/2.cc         |   1 +
 .../condition_variable_any/stop_token/2.cc    |   1 +
 .../testsuite/30_threads/jthread/version.cc   |   1 +
 libstdc++-v3/testsuite/30_threads/latch/2.cc  |   1 +
 .../testsuite/30_threads/semaphore/2.cc       |   1 +
 .../testsuite/30_threads/stop_token/2.cc      |   1 +
 libstdc++-v3/testsuite/abi/pr42230.cc         |   1 +
 libstdc++-v3/testsuite/ext/shared_ptr/1.cc    |   1 +
 libstdc++-v3/testsuite/lib/libstdc++.exp      |  14 +-
 libstdc++-v3/testsuite/lib/prune.exp          |   4 +
 libstdc++-v3/testsuite/libstdc++-abi/abi.exp  |   2 +-
 .../testsuite/std/ranges/adaptors/100577.cc   |  11 +-
 .../std/ranges/adaptors/lazy_split_neg.cc     |   1 +
 .../testsuite/std/ranges/adaptors/p1739.cc    |   2 +
 .../testsuite/std/ranges/iota/lwg3292_neg.cc  |   1 +
 libstdc++-v3/testsuite/std/ranges/p2325.cc    |   1 +
 496 files changed, 1588 insertions(+), 653 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/freestanding-main-implicitly-returns.C
 create mode 100644 gcc/testsuite/g++.dg/no-builtin-main.C
 create mode 100644 gcc/testsuite/gcc.dg/freestanding-main-implicitly-returns.c
 create mode 100644 gcc/testsuite/gcc.dg/no-builtin-main.c
 create mode 100644 libstdc++-v3/include/bits/requires_hosted.h

-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 01/10] libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 02/10] libstdc++: Filter out unconditional <stdio.h> default include Arsen Arsenović
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Jonathan Wakely, Arsen Arsenović

From: Jonathan Wakely <jwakely@redhat.com>

This allows the library to switch to freestanding mode when compiling
with the -ffreestanding flag. This means you don't need a separate
libstdc++ build configured with --disable-hosted-libstdcxx in order to
compile for a freestanding environment.

The testsuite support files cannot be compiled for freestanding, so add
-fno-freestanding to override any -ffreestanding in the test flags.

libstdc++-v3/ChangeLog:

	PR libstdc++/103626
	* acinclude.m4 (GLIBCXX_ENABLE_HOSTED): Define _GLIBCXX_HOSTED
	to __STDC_HOSTED__ for non-freestanding installations.
	* configure: Regenerate.
	* include/Makefile.am (${host_builddir}/c++config.h): Adjust
	grep pattern.
	* include/Makefile.in: Regenerate.
	* testsuite/lib/libstdc++.exp (v3-build_support): Use
	-fno-freestanding.
	* testsuite/libstdc++-abi/abi.exp: Likewise.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/acinclude.m4                    | 2 +-
 libstdc++-v3/configure                       | 2 +-
 libstdc++-v3/include/Makefile.am             | 2 +-
 libstdc++-v3/include/Makefile.in             | 2 +-
 libstdc++-v3/testsuite/lib/libstdc++.exp     | 4 ++--
 libstdc++-v3/testsuite/libstdc++-abi/abi.exp | 2 +-
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 9aa81e1ac13..1b404d7df22 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2992,7 +2992,7 @@ AC_DEFUN([GLIBCXX_ENABLE_HOSTED], [
     fi
   else
     is_hosted=yes
-    hosted_define=1
+    hosted_define=__STDC_HOSTED__
   fi
   GLIBCXX_CONDITIONAL(GLIBCXX_HOSTED, test $is_hosted = yes)
   AC_DEFINE_UNQUOTED(_GLIBCXX_HOSTED, $hosted_define,
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 07916d14d93..1ff28af2c2c 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -15651,7 +15651,7 @@ $as_echo "$as_me: Only freestanding libraries will be built" >&6;}
     fi
   else
     is_hosted=yes
-    hosted_define=1
+    hosted_define=__STDC_HOSTED__
   fi
 
 
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 3eeb407a57f..3472e84f75c 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -1326,7 +1326,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
 	&& ldbl_alt128_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1,' ;\
 	verbose_assert='s,g,g,' ; \
-	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_HOSTED[	 ][	 ]*1[	 ]*$$" \
+	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_HOSTED[	 ][	 ]*__STDC_HOSTED__[	 ]*$$" \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
 	&& grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_VERBOSE[	 ][	 ]*1[	 ]*$$" \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index e24563caaed..39ef34fc3ce 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -1820,7 +1820,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
 	&& ldbl_alt128_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_ALT128_COMPAT 1,' ;\
 	verbose_assert='s,g,g,' ; \
-	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_HOSTED[	 ][	 ]*1[	 ]*$$" \
+	grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_HOSTED[	 ][	 ]*__STDC_HOSTED__[	 ]*$$" \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
 	&& grep "^[	 ]*#[	 ]*define[	 ][	 ]*_GLIBCXX_VERBOSE[	 ][	 ]*1[	 ]*$$" \
 	${CONFIG_HEADER} > /dev/null 2>&1 \
diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index 0338b50897f..d3256b6c8c4 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -654,7 +654,7 @@ proc v3-build_support { } {
 	# do not prevent compilation.
 	# Disable LTO so that ar/ranlib don't need the LTO plugin.
 	if { [v3_target_compile $srcdir/util/$f $object_file "object" \
-		  [list "incdir=$srcdir" "additional_flags=-w -fno-lto"]]
+		  [list "incdir=$srcdir" "additional_flags=-w -fno-lto -fno-freestanding"]]
 	     != "" } {
 	    error "could not compile $f"
 	}
@@ -693,7 +693,7 @@ proc v3-build_support { } {
 	    # Compile with "-w" so that warnings issued by the compiler
 	    # do not prevent compilation.
 	    if { [v3_target_compile $srcdir/util/$f $object_file "sharedlib" \
-	     [list "incdir=$srcdir" "additional_flags=-fno-inline -w -shared -fPIC -DPIC -std=gnu++98"]]
+	     [list "incdir=$srcdir" "additional_flags=-fno-inline -w -shared -fPIC -DPIC -std=gnu++98 -fno-freestanding"]]
 		 != "" } {
 		error "could not compile $f"
 	    }
diff --git a/libstdc++-v3/testsuite/libstdc++-abi/abi.exp b/libstdc++-v3/testsuite/libstdc++-abi/abi.exp
index 9e919e1d7a0..66f19ea4514 100644
--- a/libstdc++-v3/testsuite/libstdc++-abi/abi.exp
+++ b/libstdc++-v3/testsuite/libstdc++-abi/abi.exp
@@ -60,7 +60,7 @@ remote_exec "build" "$blddir/scripts/extract_symvers" \
 
 # Build the abi_check program.
 if { [v3_target_compile "$srcdir/util/testsuite_abi_check.cc" "abi_check" \
-      "executable" [list "additional_flags=-w"]] != "" } {
+      "executable" [list "additional_flags=-w -fno-freestanding"]] != "" } {
     error "could not compile testsuite_abi_check.cc"
 }
 
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 02/10] libstdc++: Filter out unconditional <stdio.h> default include
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 01/10] libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 03/10] libstdc++: Adjust precompiled headers for freestanding Arsen Arsenović
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

_AC_INCLUDES_DEFAULT_REQUIREMENTS including <stdio.h> when checking for
stdint.h has prevented proper detection of whether stdint.h is present,
since it'd poison the cache variables with test results failing due to
<stdio.h> failing to include. As a solution, for autoconf versions under
2.70, we filter out that bit of code from ac_includes_default.

This issue was fixed in autoconf-2.70.
This also applies to various other headers, but was noticed when looking
into why HAVE_STDINT_H was misdefined.

libstdc++-v3/ChangeLog:

	* configure.ac: Remove any lines that unconditionally include
	<stdio.h> from ac_includes_default, when running Autoconf <2.70.
	* configure: Regenerate.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/configure.ac | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index b351622bf46..c05fcdda7e9 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -58,6 +58,15 @@ else
   GLIBCXX_IS_NATIVE=true
 fi
 
+# In the case that we're building without headers, we won't have <stdio.h>
+# available. In these cases, we have to instruct autotools to never include
+# <stdio.h> as a part of default headers.
+m4_version_prereq([2.70], [], [
+if test "x$with_headers" = "xno"; then
+  ac_includes_default=`echo "$ac_includes_default" | sed '/^#include <stdio.h>$/d'`
+fi
+])
+
 # Sets up automake.  Must come after AC_CANONICAL_SYSTEM.  Each of the
 # following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
 #  1.x:  minimum required version
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 03/10] libstdc++: Adjust precompiled headers for freestanding
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 01/10] libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626] Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 02/10] libstdc++: Filter out unconditional <stdio.h> default include Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 04/10] libstdc++: Mark headers that must be hosted as such [PR103626] Arsen Arsenović
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Jonathan Wakely, Arsen Arsenović

From: Jonathan Wakely <jwakely@redhat.com>

Co-authored-by: Arsen Arsenović <arsen@aarsen.me>

libstdc++-v3/ChangeLog:

	* include/precompiled/extc++.h [!_GLIBCXX_HOSTED]: Do not
	include headers that aren't valid for freestanding.
	* include/precompiled/stdc++.h [!_GLIBCXX_HOSTED]: Likewise.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/include/precompiled/extc++.h | 17 +++--
 libstdc++-v3/include/precompiled/stdc++.h | 81 +++++++++++++++++++++--
 2 files changed, 86 insertions(+), 12 deletions(-)

diff --git a/libstdc++-v3/include/precompiled/extc++.h b/libstdc++-v3/include/precompiled/extc++.h
index 7fe70738042..b094701aafb 100644
--- a/libstdc++-v3/include/precompiled/extc++.h
+++ b/libstdc++-v3/include/precompiled/extc++.h
@@ -32,14 +32,21 @@
 #include <bits/stdc++.h>
 #endif
 
-#include <ext/algorithm>
 #if __cplusplus >= 201103L
 # include <ext/aligned_buffer.h>
 #endif
 #include <ext/alloc_traits.h>
 #include <ext/atomicity.h>
-#include <ext/bitmap_allocator.h>
 #include <ext/cast.h>
+#include <ext/iterator>
+#include <ext/numeric_traits.h>
+#include <ext/pointer.h>
+#include <ext/typelist.h>
+#include <ext/type_traits.h>
+
+#if _GLIBCXX_HOSTED
+#include <ext/algorithm>
+#include <ext/bitmap_allocator.h>
 #if __cplusplus >= 201103L
 # include <ext/cmath>
 #endif
@@ -47,15 +54,12 @@
 #include <ext/debug_allocator.h>
 #include <ext/extptr_allocator.h>
 #include <ext/functional>
-#include <ext/iterator>
 #include <ext/malloc_allocator.h>
 #include <ext/memory>
 #include <ext/mt_allocator.h>
 #include <ext/new_allocator.h>
 #include <ext/numeric>
-#include <ext/numeric_traits.h>
 #include <ext/pod_char_traits.h>
-#include <ext/pointer.h>
 #include <ext/pool_allocator.h>
 #if __cplusplus >= 201103L
 # include <ext/random>
@@ -66,8 +70,6 @@
 #include <ext/stdio_filebuf.h>
 #include <ext/stdio_sync_filebuf.h>
 #include <ext/throw_allocator.h>
-#include <ext/typelist.h>
-#include <ext/type_traits.h>
 #include <ext/vstring.h>
 #include <ext/pb_ds/assoc_container.hpp>
 #include <ext/pb_ds/priority_queue.hpp>
@@ -81,3 +83,4 @@
  #include <ext/codecvt_specializations.h>
  #include <ext/enc_filebuf.h>
 #endif
+#endif // HOSTED
diff --git a/libstdc++-v3/include/precompiled/stdc++.h b/libstdc++-v3/include/precompiled/stdc++.h
index 5ee1244dc22..bfbb1654b88 100644
--- a/libstdc++-v3/include/precompiled/stdc++.h
+++ b/libstdc++-v3/include/precompiled/stdc++.h
@@ -28,6 +28,80 @@
 
 // 17.4.1.2 Headers
 
+// C
+#ifndef _GLIBCXX_NO_ASSERT
+#include <cassert>
+#endif
+#include <cctype>
+#include <cfloat>
+#include <ciso646>
+#include <climits>
+#include <csetjmp>
+#include <cstdarg>
+#include <cstddef>
+#include <cstdlib>
+
+#if __cplusplus >= 201103L
+#include <cstdint>
+#endif
+
+// C++
+// #include <bitset>
+// #include <complex>
+#include <algorithm>
+#include <bitset>
+#include <functional>
+#include <iterator>
+#include <limits>
+#include <memory>
+#include <new>
+#include <numeric>
+#include <typeinfo>
+#include <utility>
+
+#if __cplusplus >= 201103L
+#include <array>
+#include <atomic>
+#include <initializer_list>
+#include <ratio>
+#include <scoped_allocator>
+#include <tuple>
+#include <typeindex>
+#include <type_traits>
+#endif
+
+#if __cplusplus >= 201402L
+#endif
+
+#if __cplusplus >= 201703L
+#include <any>
+#include <charconv>
+// #include <execution>
+#include <optional>
+#include <variant>
+#endif
+
+#if __cplusplus >= 202002L
+#include <bit>
+#include <compare>
+#include <concepts>
+#include <numbers>
+#include <ranges>
+#include <span>
+#include <source_location>
+#include <version>
+#endif
+
+#if __cplusplus > 202002L
+#include <expected>
+#include <stdatomic.h>
+#if __cpp_impl_coroutine
+# include <coroutine>
+#endif
+#endif
+
+
+#if _GLIBCXX_HOSTED
 // C
 #ifndef _GLIBCXX_NO_ASSERT
 #include <cassert>
@@ -62,8 +136,6 @@
 #endif
 
 // C++
-#include <algorithm>
-#include <bitset>
 #include <complex>
 #include <deque>
 #include <exception>
@@ -138,9 +210,6 @@
 #include <bit>
 #include <compare>
 #include <concepts>
-#if __cpp_impl_coroutine
-# include <coroutine>
-#endif
 #include <latch>
 #include <numbers>
 #include <ranges>
@@ -160,3 +229,5 @@
 #endif
 #include <stdatomic.h>
 #endif
+
+#endif // HOSTED
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 04/10] libstdc++: Mark headers that must be hosted as such [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (2 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 03/10] libstdc++: Adjust precompiled headers for freestanding Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 05/10] c-family: Implement new `int main' semantics in freestanding Arsen Arsenović
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović, Jonathan Wakely

PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding

Co-authored-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:
	PR libstdc++/103626
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/bits/requires_hosted.h: New header.
	* include/experimental/algorithm: Include
	<bits/requires_hosted.h>.
	* include/experimental/any: Likewise.
	* include/experimental/array: Likewise.
	* include/experimental/buffer: Likewise.
	* include/experimental/chrono: Likewise.
	* include/experimental/deque: Likewise.
	* include/experimental/executor: Likewise.
	* include/experimental/filesystem: Likewise.
	* include/experimental/forward_list: Likewise.
	* include/experimental/functional: Likewise.
	* include/experimental/internet: Likewise.
	* include/experimental/io_context: Likewise.
	* include/experimental/iterator: Likewise.
	* include/experimental/list: Likewise.
	* include/experimental/map: Likewise.
	* include/experimental/memory: Likewise.
	* include/experimental/memory_resource: Likewise.
	* include/experimental/net: Likewise.
	* include/experimental/netfwd: Likewise.
	* include/experimental/numeric: Likewise.
	* include/experimental/optional: Likewise.
	* include/experimental/propagate_const: Likewise.
	* include/experimental/random: Likewise.
	* include/experimental/ratio: Likewise.
	* include/experimental/regex: Likewise.
	* include/experimental/scope: Likewise.
	* include/experimental/set: Likewise.
	* include/experimental/simd: Likewise.
	* include/experimental/socket: Likewise.
	* include/experimental/source_location: Likewise.
	* include/experimental/string: Likewise.
	* include/experimental/string_view: Likewise.
	* include/experimental/system_error: Likewise.
	* include/experimental/timer: Likewise.
	* include/experimental/tuple: Likewise.
	* include/experimental/unordered_map: Likewise.
	* include/experimental/unordered_set: Likewise.
	* include/experimental/utility: Likewise.
	* include/experimental/vector: Likewise.
	* include/std/barrier: Likewise.
	* include/std/chrono: Likewise.
	* include/std/condition_variable: Likewise.
	* include/std/deque: Likewise.
	* include/std/execution: Likewise.
	* include/std/filesystem: Likewise.
	* include/std/forward_list: Likewise.
	* include/std/fstream: Likewise.
	* include/std/future: Likewise.
	* include/std/iomanip: Likewise.
	* include/std/ios: Likewise.
	* include/std/iosfwd: Likewise.
	* include/std/iostream: Likewise.
	* include/std/istream: Likewise.
	* include/std/latch: Likewise.
	* include/std/list: Likewise.
	* include/std/locale: Likewise.
	* include/std/map: Likewise.
	* include/std/memory_resource: Likewise.
	* include/std/mutex: Likewise.
	* include/std/ostream: Likewise.
	* include/std/queue: Likewise.
	* include/std/random: Likewise.
	* include/std/regex: Likewise.
	* include/std/semaphore: Likewise.
	* include/std/set: Likewise.
	* include/std/shared_mutex: Likewise.
	* include/std/spanstream: Likewise.
	* include/std/sstream: Likewise.
	* include/std/stack: Likewise.
	* include/std/stacktrace: Likewise.
	* include/std/stop_token: Likewise.
	* include/std/streambuf: Likewise.
	* include/std/string: Likewise.
	* include/std/syncstream: Likewise.
	* include/std/system_error: Likewise.
	* include/std/thread: Likewise.
	* include/std/unordered_map: Likewise.
	* include/std/unordered_set: Likewise.
	* include/std/valarray: Likewise.
	* include/std/vector: Likewise.
	* include/tr1/array: Likewise.
	* include/tr1/ccomplex: Likewise.
	* include/tr1/cctype: Likewise.
	* include/tr1/cfenv: Likewise.
	* include/tr1/cfloat: Likewise.
	* include/tr1/cinttypes: Likewise.
	* include/tr1/climits: Likewise.
	* include/tr1/cmath: Likewise.
	* include/tr1/complex: Likewise.
	* include/tr1/complex.h: Likewise.
	* include/tr1/cstdarg: Likewise.
	* include/tr1/cstdbool: Likewise.
	* include/tr1/cstdint: Likewise.
	* include/tr1/cstdio: Likewise.
	* include/tr1/cstdlib: Likewise.
	* include/tr1/ctgmath: Likewise.
	* include/tr1/ctime: Likewise.
	* include/tr1/ctype.h: Likewise.
	* include/tr1/cwchar: Likewise.
	* include/tr1/cwctype: Likewise.
	* include/tr1/fenv.h: Likewise.
	* include/tr1/float.h: Likewise.
	* include/tr1/functional: Likewise.
	* include/tr1/inttypes.h: Likewise.
	* include/tr1/limits.h: Likewise.
	* include/tr1/math.h: Likewise.
	* include/tr1/memory: Likewise.
	* include/tr1/random: Likewise.
	* include/tr1/regex: Likewise.
	* include/tr1/stdarg.h: Likewise.
	* include/tr1/stdbool.h: Likewise.
	* include/tr1/stdint.h: Likewise.
	* include/tr1/stdio.h: Likewise.
	* include/tr1/stdlib.h: Likewise.
	* include/tr1/tgmath.h: Likewise.
	* include/tr1/tuple: Likewise.
	* include/tr1/type_traits: Likewise.
	* include/tr1/unordered_map: Likewise.
	* include/tr1/unordered_set: Likewise.
	* include/tr1/utility: Likewise.
	* include/tr1/wchar.h: Likewise.
	* include/tr1/wctype.h: Likewise.
	* include/c_global/cmath: Likewise.
	* include/ext/algorithm: Include <bits/requires_hosted.h>.
	* include/ext/bitmap_allocator.h: Likewise.
	* include/ext/cmath: Likewise.
	* include/ext/codecvt_specializations.h: Likewise.
	* include/ext/debug_allocator.h: Likewise.
	* include/ext/enc_filebuf.h: Likewise.
	* include/ext/extptr_allocator.h: Likewise.
	* include/ext/functional: Likewise.
	* include/ext/malloc_allocator.h: Likewise.
	* include/ext/memory: Likewise.
	* include/ext/mt_allocator.h: Likewise.
	* include/ext/new_allocator.h: Likewise.
	* include/ext/numeric: Likewise.
	* include/ext/pod_char_traits.h: Likewise.
	* include/ext/pool_allocator.h: Likewise.
	* include/ext/random: Likewise.
	* include/ext/random.tcc: Likewise.
	* include/ext/rb_tree: Likewise.
	* include/ext/rc_string_base.h: Likewise.
	* include/ext/rope: Likewise.
	* include/ext/ropeimpl.h: Likewise.
	* include/ext/slist: Likewise.
	* include/ext/sso_string_base.h: Likewise.
	* include/ext/stdio_filebuf.h: Likewise.
	* include/ext/stdio_sync_filebuf.h: Likewise.
	* include/ext/string_conversions.h: Likewise.
	* include/ext/throw_allocator.h: Likewise.
	* include/ext/vstring.h: Likewise.
	* include/ext/vstring.tcc: Likewise.
	* include/ext/vstring_fwd.h: Likewise.
	* include/ext/vstring_util.h: Likewise.
	* include/std/charconv: Likewise.
	(__cpp_lib_to_chars): Do not define for freestanding.
	* include/std/version: Adjust which macros get defined in
	freestanding.
	* include/ext/pointer.h [!_GLIBCXX_HOSTED]: Omit iostream
	functionality from freestanding.
	* include/std/algorithm [!_GLIBCXX_HOSTED]: Omit PSTL algos.
	* include/std/memory [!_GLIBCXX_HOSTED]: Omit
	<bits/stl_tempbuf.h> in freestanding
	* include/bits/algorithmfwd.h [!_GLIBCXX_HOSTED]: Omit leftover
	random_shuffle and stable_partition definition.
	* include/bits/stl_algo.h [!_GLIBCXX_HOSTED]: Omit
	random_shuffle and stable_partition from freestanding.
	* include/bits/ranges_algo.h [!_GLIBCXX_HOSTED]: Omit
	stable_partition from freestanding.
	* include/bits/concept_check.h: Remove needless HOSTED check.
	* include/std/iterator: Include <bits/ranges_base.h>.
	* include/std/numeric (__cpp_lib_parallel_algorithms): Do not
	define for freestanding.
	* include/std/functional (__cpp_lib_boyer_moore_searcher):
	Likewise.
	* testsuite/lib/prune.exp: Match error for hosted-only libstdc++
	tests.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/include/Makefile.am              |   1 +
 libstdc++-v3/include/Makefile.in              |   1 +
 libstdc++-v3/include/bits/algorithmfwd.h      |   4 +
 libstdc++-v3/include/bits/concept_check.h     |   2 +-
 libstdc++-v3/include/bits/ranges_algo.h       |   2 +
 libstdc++-v3/include/bits/requires_hosted.h   |  37 +++++++
 libstdc++-v3/include/bits/stl_algo.h          |   2 +-
 libstdc++-v3/include/c_global/cmath           |   2 +
 libstdc++-v3/include/experimental/algorithm   |   2 +
 libstdc++-v3/include/experimental/any         |   2 +
 libstdc++-v3/include/experimental/array       |   2 +
 libstdc++-v3/include/experimental/buffer      |   2 +
 libstdc++-v3/include/experimental/chrono      |   2 +
 libstdc++-v3/include/experimental/deque       |   2 +
 libstdc++-v3/include/experimental/executor    |   2 +
 libstdc++-v3/include/experimental/filesystem  |   2 +
 .../include/experimental/forward_list         |   2 +
 libstdc++-v3/include/experimental/functional  |   2 +
 libstdc++-v3/include/experimental/internet    |   2 +
 libstdc++-v3/include/experimental/io_context  |   2 +
 libstdc++-v3/include/experimental/iterator    |   2 +
 libstdc++-v3/include/experimental/list        |   2 +
 libstdc++-v3/include/experimental/map         |   2 +
 libstdc++-v3/include/experimental/memory      |   2 +
 .../include/experimental/memory_resource      |   2 +
 libstdc++-v3/include/experimental/net         |   2 +
 libstdc++-v3/include/experimental/netfwd      |   2 +
 libstdc++-v3/include/experimental/numeric     |   2 +
 libstdc++-v3/include/experimental/optional    |   2 +
 .../include/experimental/propagate_const      |   2 +
 libstdc++-v3/include/experimental/random      |   2 +
 libstdc++-v3/include/experimental/ratio       |   2 +
 libstdc++-v3/include/experimental/regex       |   2 +
 libstdc++-v3/include/experimental/scope       |   2 +
 libstdc++-v3/include/experimental/set         |   2 +
 libstdc++-v3/include/experimental/simd        |   2 +
 libstdc++-v3/include/experimental/socket      |   2 +
 .../include/experimental/source_location      |   2 +
 libstdc++-v3/include/experimental/string      |   2 +
 libstdc++-v3/include/experimental/string_view |   2 +
 .../include/experimental/system_error         |   2 +
 libstdc++-v3/include/experimental/timer       |   2 +
 libstdc++-v3/include/experimental/tuple       |   2 +
 .../include/experimental/unordered_map        |   2 +
 .../include/experimental/unordered_set        |   2 +
 libstdc++-v3/include/experimental/utility     |   2 +
 libstdc++-v3/include/experimental/vector      |   2 +
 libstdc++-v3/include/ext/algorithm            |   2 +
 libstdc++-v3/include/ext/bitmap_allocator.h   |   2 +
 libstdc++-v3/include/ext/cmath                |   2 +
 .../include/ext/codecvt_specializations.h     |   2 +
 libstdc++-v3/include/ext/debug_allocator.h    |   2 +
 libstdc++-v3/include/ext/enc_filebuf.h        |   2 +
 libstdc++-v3/include/ext/extptr_allocator.h   |   2 +
 libstdc++-v3/include/ext/functional           |   2 +
 libstdc++-v3/include/ext/malloc_allocator.h   |   2 +
 libstdc++-v3/include/ext/memory               |   2 +
 libstdc++-v3/include/ext/mt_allocator.h       |   2 +
 libstdc++-v3/include/ext/new_allocator.h      |   2 +
 libstdc++-v3/include/ext/numeric              |   2 +
 libstdc++-v3/include/ext/pod_char_traits.h    |   2 +
 libstdc++-v3/include/ext/pointer.h            |   7 +-
 libstdc++-v3/include/ext/pool_allocator.h     |   2 +
 libstdc++-v3/include/ext/random               |   2 +
 libstdc++-v3/include/ext/random.tcc           |   2 +
 libstdc++-v3/include/ext/rb_tree              |   2 +
 libstdc++-v3/include/ext/rc_string_base.h     |   2 +
 libstdc++-v3/include/ext/rope                 |   2 +
 libstdc++-v3/include/ext/ropeimpl.h           |   2 +
 libstdc++-v3/include/ext/slist                |   2 +
 libstdc++-v3/include/ext/sso_string_base.h    |   2 +
 libstdc++-v3/include/ext/stdio_filebuf.h      |   2 +
 libstdc++-v3/include/ext/stdio_sync_filebuf.h |   2 +
 libstdc++-v3/include/ext/string_conversions.h |   2 +
 libstdc++-v3/include/ext/throw_allocator.h    |   2 +
 libstdc++-v3/include/ext/vstring.h            |   2 +
 libstdc++-v3/include/ext/vstring.tcc          |   2 +
 libstdc++-v3/include/ext/vstring_fwd.h        |   2 +
 libstdc++-v3/include/ext/vstring_util.h       |   2 +
 libstdc++-v3/include/std/algorithm            |   4 +-
 libstdc++-v3/include/std/barrier              |   2 +
 libstdc++-v3/include/std/charconv             |   4 +-
 libstdc++-v3/include/std/chrono               |   2 +
 libstdc++-v3/include/std/condition_variable   |   2 +
 libstdc++-v3/include/std/deque                |   2 +
 libstdc++-v3/include/std/execution            |   2 +
 libstdc++-v3/include/std/filesystem           |   2 +
 libstdc++-v3/include/std/forward_list         |   2 +
 libstdc++-v3/include/std/fstream              |   2 +
 libstdc++-v3/include/std/functional           |   3 +-
 libstdc++-v3/include/std/future               |   2 +
 libstdc++-v3/include/std/iomanip              |   2 +
 libstdc++-v3/include/std/ios                  |   2 +
 libstdc++-v3/include/std/iosfwd               |   2 +
 libstdc++-v3/include/std/iostream             |   2 +
 libstdc++-v3/include/std/istream              |   2 +
 libstdc++-v3/include/std/iterator             |   4 +
 libstdc++-v3/include/std/latch                |   2 +
 libstdc++-v3/include/std/list                 |   2 +
 libstdc++-v3/include/std/locale               |   2 +
 libstdc++-v3/include/std/map                  |   2 +
 libstdc++-v3/include/std/memory               |   2 +-
 libstdc++-v3/include/std/memory_resource      |   2 +
 libstdc++-v3/include/std/mutex                |   2 +
 libstdc++-v3/include/std/numeric              |   2 +-
 libstdc++-v3/include/std/ostream              |   2 +
 libstdc++-v3/include/std/queue                |   2 +
 libstdc++-v3/include/std/random               |   2 +
 libstdc++-v3/include/std/regex                |   2 +
 libstdc++-v3/include/std/semaphore            |   2 +
 libstdc++-v3/include/std/set                  |   2 +
 libstdc++-v3/include/std/shared_mutex         |   2 +
 libstdc++-v3/include/std/spanstream           |   2 +
 libstdc++-v3/include/std/sstream              |   2 +
 libstdc++-v3/include/std/stack                |   2 +
 libstdc++-v3/include/std/stacktrace           |   2 +
 libstdc++-v3/include/std/stop_token           |   2 +
 libstdc++-v3/include/std/streambuf            |   2 +
 libstdc++-v3/include/std/string               |   2 +
 libstdc++-v3/include/std/syncstream           |   2 +
 libstdc++-v3/include/std/system_error         |   2 +
 libstdc++-v3/include/std/thread               |   2 +
 libstdc++-v3/include/std/unordered_map        |   2 +
 libstdc++-v3/include/std/unordered_set        |   2 +
 libstdc++-v3/include/std/valarray             |   2 +
 libstdc++-v3/include/std/vector               |   2 +
 libstdc++-v3/include/std/version              | 100 +++++++++---------
 libstdc++-v3/include/tr1/array                |   2 +
 libstdc++-v3/include/tr1/ccomplex             |   2 +
 libstdc++-v3/include/tr1/cctype               |   2 +
 libstdc++-v3/include/tr1/cfenv                |   2 +
 libstdc++-v3/include/tr1/cfloat               |   2 +
 libstdc++-v3/include/tr1/cinttypes            |   2 +
 libstdc++-v3/include/tr1/climits              |   2 +
 libstdc++-v3/include/tr1/cmath                |   2 +
 libstdc++-v3/include/tr1/complex              |   2 +
 libstdc++-v3/include/tr1/complex.h            |   2 +
 libstdc++-v3/include/tr1/cstdarg              |   2 +
 libstdc++-v3/include/tr1/cstdbool             |   2 +
 libstdc++-v3/include/tr1/cstdint              |   2 +
 libstdc++-v3/include/tr1/cstdio               |   2 +
 libstdc++-v3/include/tr1/cstdlib              |   2 +
 libstdc++-v3/include/tr1/ctgmath              |   2 +
 libstdc++-v3/include/tr1/ctime                |   2 +
 libstdc++-v3/include/tr1/ctype.h              |   2 +
 libstdc++-v3/include/tr1/cwchar               |   2 +
 libstdc++-v3/include/tr1/cwctype              |   2 +
 libstdc++-v3/include/tr1/fenv.h               |   2 +
 libstdc++-v3/include/tr1/float.h              |   2 +
 libstdc++-v3/include/tr1/functional           |   2 +
 libstdc++-v3/include/tr1/inttypes.h           |   2 +
 libstdc++-v3/include/tr1/limits.h             |   2 +
 libstdc++-v3/include/tr1/math.h               |   2 +
 libstdc++-v3/include/tr1/memory               |   2 +
 libstdc++-v3/include/tr1/random               |   2 +
 libstdc++-v3/include/tr1/regex                |   2 +
 libstdc++-v3/include/tr1/stdarg.h             |   2 +
 libstdc++-v3/include/tr1/stdbool.h            |   2 +
 libstdc++-v3/include/tr1/stdint.h             |   2 +
 libstdc++-v3/include/tr1/stdio.h              |   2 +
 libstdc++-v3/include/tr1/stdlib.h             |   2 +
 libstdc++-v3/include/tr1/tgmath.h             |   2 +
 libstdc++-v3/include/tr1/tuple                |   2 +
 libstdc++-v3/include/tr1/type_traits          |   2 +
 libstdc++-v3/include/tr1/unordered_map        |   2 +
 libstdc++-v3/include/tr1/unordered_set        |   2 +
 libstdc++-v3/include/tr1/utility              |   2 +
 libstdc++-v3/include/tr1/wchar.h              |   2 +
 libstdc++-v3/include/tr1/wctype.h             |   2 +
 libstdc++-v3/testsuite/lib/prune.exp          |   4 +
 170 files changed, 428 insertions(+), 59 deletions(-)
 create mode 100644 libstdc++-v3/include/bits/requires_hosted.h

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 3472e84f75c..56227427b6d 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -193,6 +193,7 @@ bits_headers = \
 	${bits_srcdir}/regex_compiler.tcc \
 	${bits_srcdir}/regex_executor.h \
 	${bits_srcdir}/regex_executor.tcc \
+	${bits_srcdir}/requires_hosted.h \
 	${bits_srcdir}/semaphore_base.h \
 	${bits_srcdir}/shared_ptr.h \
 	${bits_srcdir}/shared_ptr_atomic.h \
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 39ef34fc3ce..f6ed98fefcd 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -551,6 +551,7 @@ bits_headers = \
 	${bits_srcdir}/regex_compiler.tcc \
 	${bits_srcdir}/regex_executor.h \
 	${bits_srcdir}/regex_executor.tcc \
+	${bits_srcdir}/requires_hosted.h \
 	${bits_srcdir}/semaphore_base.h \
 	${bits_srcdir}/shared_ptr.h \
 	${bits_srcdir}/shared_ptr_atomic.h \
diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h
index aacc34e09e8..08330528e8e 100644
--- a/libstdc++-v3/include/bits/algorithmfwd.h
+++ b/libstdc++-v3/include/bits/algorithmfwd.h
@@ -638,9 +638,11 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
     void
     sort_heap(_RAIter, _RAIter, _Compare);
 
+#if _GLIBCXX_HOSTED
   template<typename _BIter, typename _Predicate>
     _BIter
     stable_partition(_BIter, _BIter, _Predicate);
+#endif
 
 #if __cplusplus < 201103L
   // For C++11 swap() is declared in <type_traits>.
@@ -828,6 +830,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
     _BIter
     partition(_BIter, _BIter, _Predicate);
 
+#if _GLIBCXX_HOSTED
   template<typename _RAIter>
     void
     random_shuffle(_RAIter, _RAIter);
@@ -840,6 +843,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 #else
 		   _Generator&);
 #endif
+#endif // HOSTED
 
   template<typename _FIter, typename _Tp>
     _GLIBCXX20_CONSTEXPR
diff --git a/libstdc++-v3/include/bits/concept_check.h b/libstdc++-v3/include/bits/concept_check.h
index 35969d27280..32b794d147e 100644
--- a/libstdc++-v3/include/bits/concept_check.h
+++ b/libstdc++-v3/include/bits/concept_check.h
@@ -43,7 +43,7 @@
 // configure options or editing c++config.h.
 // It is not supported for freestanding implementations.
 
-#if !defined(_GLIBCXX_CONCEPT_CHECKS) || !_GLIBCXX_HOSTED
+#if !defined(_GLIBCXX_CONCEPT_CHECKS)
 
 #define __glibcxx_function_requires(...)
 #define __glibcxx_class_requires(_a,_b)
diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h
index 228e10b62bf..de71bd07a2f 100644
--- a/libstdc++-v3/include/bits/ranges_algo.h
+++ b/libstdc++-v3/include/bits/ranges_algo.h
@@ -2326,6 +2326,7 @@ namespace ranges
 
   inline constexpr __partition_fn partition{};
 
+#if _GLIBCXX_HOSTED
   struct __stable_partition_fn
   {
     template<bidirectional_iterator _Iter, sentinel_for<_Iter> _Sent,
@@ -2356,6 +2357,7 @@ namespace ranges
   };
 
   inline constexpr __stable_partition_fn stable_partition{};
+#endif
 
   template<typename _Iter, typename _Out1, typename _Out2>
     struct in_out_out_result
diff --git a/libstdc++-v3/include/bits/requires_hosted.h b/libstdc++-v3/include/bits/requires_hosted.h
new file mode 100644
index 00000000000..86916e22682
--- /dev/null
+++ b/libstdc++-v3/include/bits/requires_hosted.h
@@ -0,0 +1,37 @@
+// Copyright The GNU Toolchain Authors.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/requires_hosted.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{version}
+ */
+
+#ifndef _REQUIRES_FREESTANDING_H
+#define _REQUIRES_FREESTANDING_H 1
+
+#include <bits/c++config.h>
+
+#if !_GLIBCXX_HOSTED
+#  error "This header is not available in freestanding mode."
+#endif
+
+#endif
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index e63fe66852e..6386918fc8b 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -4594,7 +4594,6 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	      std::iter_swap(__i, __j);
 	  }
     }
-#endif // HOSTED
 
   /**
    *  @brief Shuffle the elements of a sequence using a random number
@@ -4638,6 +4637,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO
 	    std::iter_swap(__i, __j);
 	}
     }
+#endif // HOSTED
 #endif // C++11 || USE_DEPRECATED
 
   /**
diff --git a/libstdc++-v3/include/c_global/cmath b/libstdc++-v3/include/c_global/cmath
index 1b993f30330..cc14982d3bb 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -38,6 +38,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h>
+
 #include <bits/c++config.h>
 #include <bits/cpp_type_traits.h>
 #include <ext/type_traits.h>
diff --git a/libstdc++-v3/include/experimental/algorithm b/libstdc++-v3/include/experimental/algorithm
index 5a4a0221222..99348cbb799 100644
--- a/libstdc++-v3/include/experimental/algorithm
+++ b/libstdc++-v3/include/experimental/algorithm
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <algorithm>
diff --git a/libstdc++-v3/include/experimental/any b/libstdc++-v3/include/experimental/any
index b8ff90ae204..b8ab5a81236 100644
--- a/libstdc++-v3/include/experimental/any
+++ b/libstdc++-v3/include/experimental/any
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <typeinfo>
diff --git a/libstdc++-v3/include/experimental/array b/libstdc++-v3/include/experimental/array
index 3a064d2181f..f2bdd650f06 100644
--- a/libstdc++-v3/include/experimental/array
+++ b/libstdc++-v3/include/experimental/array
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <array>
diff --git a/libstdc++-v3/include/experimental/buffer b/libstdc++-v3/include/experimental/buffer
index 0c103e14891..bc346180d92 100644
--- a/libstdc++-v3/include/experimental/buffer
+++ b/libstdc++-v3/include/experimental/buffer
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <array>
diff --git a/libstdc++-v3/include/experimental/chrono b/libstdc++-v3/include/experimental/chrono
index 8ec31910cd8..417f8be5562 100644
--- a/libstdc++-v3/include/experimental/chrono
+++ b/libstdc++-v3/include/experimental/chrono
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <bits/chrono.h> // Only the C++14 parts of <chrono>
diff --git a/libstdc++-v3/include/experimental/deque b/libstdc++-v3/include/experimental/deque
index b64deee1990..4f3d12df832 100644
--- a/libstdc++-v3/include/experimental/deque
+++ b/libstdc++-v3/include/experimental/deque
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <deque>
diff --git a/libstdc++-v3/include/experimental/executor b/libstdc++-v3/include/experimental/executor
index bfcf2171f9b..9d0cd6edb94 100644
--- a/libstdc++-v3/include/experimental/executor
+++ b/libstdc++-v3/include/experimental/executor
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <algorithm>
diff --git a/libstdc++-v3/include/experimental/filesystem b/libstdc++-v3/include/experimental/filesystem
index 85872e61693..7c47e6b79d1 100644
--- a/libstdc++-v3/include/experimental/filesystem
+++ b/libstdc++-v3/include/experimental/filesystem
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201103L
 
 #include <experimental/bits/fs_fwd.h>
diff --git a/libstdc++-v3/include/experimental/forward_list b/libstdc++-v3/include/experimental/forward_list
index fedf2ba0c3b..679b43d8c86 100644
--- a/libstdc++-v3/include/experimental/forward_list
+++ b/libstdc++-v3/include/experimental/forward_list
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <forward_list>
diff --git a/libstdc++-v3/include/experimental/functional b/libstdc++-v3/include/experimental/functional
index 1a47b522bf4..a0e73fa46b9 100644
--- a/libstdc++-v3/include/experimental/functional
+++ b/libstdc++-v3/include/experimental/functional
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <functional>
diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet
index 4be4bfb731e..6e3c355f38e 100644
--- a/libstdc++-v3/include/experimental/internet
+++ b/libstdc++-v3/include/experimental/internet
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <experimental/netfwd>
diff --git a/libstdc++-v3/include/experimental/io_context b/libstdc++-v3/include/experimental/io_context
index 8d4fc25f2ca..cea2a864e9c 100644
--- a/libstdc++-v3/include/experimental/io_context
+++ b/libstdc++-v3/include/experimental/io_context
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <atomic>
diff --git a/libstdc++-v3/include/experimental/iterator b/libstdc++-v3/include/experimental/iterator
index e68d09cab33..35ac5a6044c 100644
--- a/libstdc++-v3/include/experimental/iterator
+++ b/libstdc++-v3/include/experimental/iterator
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <iterator>
diff --git a/libstdc++-v3/include/experimental/list b/libstdc++-v3/include/experimental/list
index 7e4ef189107..7d49eefe5ec 100644
--- a/libstdc++-v3/include/experimental/list
+++ b/libstdc++-v3/include/experimental/list
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <list>
diff --git a/libstdc++-v3/include/experimental/map b/libstdc++-v3/include/experimental/map
index 4936a660189..525252b83c1 100644
--- a/libstdc++-v3/include/experimental/map
+++ b/libstdc++-v3/include/experimental/map
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <map>
diff --git a/libstdc++-v3/include/experimental/memory b/libstdc++-v3/include/experimental/memory
index 6cf11b4a14d..fabeb581161 100644
--- a/libstdc++-v3/include/experimental/memory
+++ b/libstdc++-v3/include/experimental/memory
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <memory>
diff --git a/libstdc++-v3/include/experimental/memory_resource b/libstdc++-v3/include/experimental/memory_resource
index d70a93219fa..aa86c042d84 100644
--- a/libstdc++-v3/include/experimental/memory_resource
+++ b/libstdc++-v3/include/experimental/memory_resource
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <memory>			// align, uses_allocator, __uses_alloc
diff --git a/libstdc++-v3/include/experimental/net b/libstdc++-v3/include/experimental/net
index 9d1d5c7a430..1268528d76c 100644
--- a/libstdc++-v3/include/experimental/net
+++ b/libstdc++-v3/include/experimental/net
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <experimental/executor>
diff --git a/libstdc++-v3/include/experimental/netfwd b/libstdc++-v3/include/experimental/netfwd
index 2fd6ff9cf0e..e1e05336f10 100644
--- a/libstdc++-v3/include/experimental/netfwd
+++ b/libstdc++-v3/include/experimental/netfwd
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 // #define __cpp_lib_experimental_net 201803
diff --git a/libstdc++-v3/include/experimental/numeric b/libstdc++-v3/include/experimental/numeric
index 426d9430dd6..26be27a7b72 100644
--- a/libstdc++-v3/include/experimental/numeric
+++ b/libstdc++-v3/include/experimental/numeric
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <numeric>
diff --git a/libstdc++-v3/include/experimental/optional b/libstdc++-v3/include/experimental/optional
index 0d3a89404d1..c5da58aa938 100644
--- a/libstdc++-v3/include/experimental/optional
+++ b/libstdc++-v3/include/experimental/optional
@@ -30,6 +30,8 @@
 #ifndef _GLIBCXX_EXPERIMENTAL_OPTIONAL
 #define _GLIBCXX_EXPERIMENTAL_OPTIONAL 1
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <type_traits>
diff --git a/libstdc++-v3/include/experimental/propagate_const b/libstdc++-v3/include/experimental/propagate_const
index 80fcb2c0605..258ef6fdd44 100644
--- a/libstdc++-v3/include/experimental/propagate_const
+++ b/libstdc++-v3/include/experimental/propagate_const
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <type_traits>
diff --git a/libstdc++-v3/include/experimental/random b/libstdc++-v3/include/experimental/random
index adef31fabd6..8728aa30f02 100644
--- a/libstdc++-v3/include/experimental/random
+++ b/libstdc++-v3/include/experimental/random
@@ -30,6 +30,8 @@
 #ifndef _GLIBCXX_EXPERIMENTAL_RANDOM
 #define _GLIBCXX_EXPERIMENTAL_RANDOM 1
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 #include <random>
 #include <experimental/bits/lfts_config.h>
diff --git a/libstdc++-v3/include/experimental/ratio b/libstdc++-v3/include/experimental/ratio
index 59ce85e7f30..5d873f2d673 100644
--- a/libstdc++-v3/include/experimental/ratio
+++ b/libstdc++-v3/include/experimental/ratio
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <ratio>
diff --git a/libstdc++-v3/include/experimental/regex b/libstdc++-v3/include/experimental/regex
index 9d063c6f5b4..5efb8867347 100644
--- a/libstdc++-v3/include/experimental/regex
+++ b/libstdc++-v3/include/experimental/regex
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <regex>
diff --git a/libstdc++-v3/include/experimental/scope b/libstdc++-v3/include/experimental/scope
index 208fadc513e..5dbeac14795 100644
--- a/libstdc++-v3/include/experimental/scope
+++ b/libstdc++-v3/include/experimental/scope
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 202002L
 
 #include <concepts>
diff --git a/libstdc++-v3/include/experimental/set b/libstdc++-v3/include/experimental/set
index aa43a2b2fc3..b42a3cdcf1a 100644
--- a/libstdc++-v3/include/experimental/set
+++ b/libstdc++-v3/include/experimental/set
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <set>
diff --git a/libstdc++-v3/include/experimental/simd b/libstdc++-v3/include/experimental/simd
index f526c70c728..4bd46481a25 100644
--- a/libstdc++-v3/include/experimental/simd
+++ b/libstdc++-v3/include/experimental/simd
@@ -33,6 +33,8 @@
 #ifndef _GLIBCXX_EXPERIMENTAL_SIMD
 #define _GLIBCXX_EXPERIMENTAL_SIMD
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201703L
 
 /** @defgroup par-ts Parallelism TS
diff --git a/libstdc++-v3/include/experimental/socket b/libstdc++-v3/include/experimental/socket
index 868927afeb5..65fe2b7535b 100644
--- a/libstdc++-v3/include/experimental/socket
+++ b/libstdc++-v3/include/experimental/socket
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <experimental/netfwd>
diff --git a/libstdc++-v3/include/experimental/source_location b/libstdc++-v3/include/experimental/source_location
index afd3401117c..acd41c0c9de 100644
--- a/libstdc++-v3/include/experimental/source_location
+++ b/libstdc++-v3/include/experimental/source_location
@@ -30,6 +30,8 @@
 #ifndef _GLIBCXX_EXPERIMENTAL_SRCLOC
 #define _GLIBCXX_EXPERIMENTAL_SRCLOC 1
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 #include <cstdint>
 
diff --git a/libstdc++-v3/include/experimental/string b/libstdc++-v3/include/experimental/string
index 01bd84b4df9..f326b85a0db 100644
--- a/libstdc++-v3/include/experimental/string
+++ b/libstdc++-v3/include/experimental/string
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <string>
diff --git a/libstdc++-v3/include/experimental/string_view b/libstdc++-v3/include/experimental/string_view
index ff04bb1fd0b..f5b4cf10c44 100644
--- a/libstdc++-v3/include/experimental/string_view
+++ b/libstdc++-v3/include/experimental/string_view
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <string>
diff --git a/libstdc++-v3/include/experimental/system_error b/libstdc++-v3/include/experimental/system_error
index 9023d4429eb..f41cddda8f4 100644
--- a/libstdc++-v3/include/experimental/system_error
+++ b/libstdc++-v3/include/experimental/system_error
@@ -36,6 +36,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <system_error>
diff --git a/libstdc++-v3/include/experimental/timer b/libstdc++-v3/include/experimental/timer
index 745f3a465ba..02498b0aed5 100644
--- a/libstdc++-v3/include/experimental/timer
+++ b/libstdc++-v3/include/experimental/timer
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <bits/chrono.h>
diff --git a/libstdc++-v3/include/experimental/tuple b/libstdc++-v3/include/experimental/tuple
index 338f2f5efb4..906bd7b1225 100644
--- a/libstdc++-v3/include/experimental/tuple
+++ b/libstdc++-v3/include/experimental/tuple
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <tuple>
diff --git a/libstdc++-v3/include/experimental/unordered_map b/libstdc++-v3/include/experimental/unordered_map
index 1a41687d593..ce56c2afb8c 100644
--- a/libstdc++-v3/include/experimental/unordered_map
+++ b/libstdc++-v3/include/experimental/unordered_map
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <unordered_map>
diff --git a/libstdc++-v3/include/experimental/unordered_set b/libstdc++-v3/include/experimental/unordered_set
index 583c43798a7..c7075874daf 100644
--- a/libstdc++-v3/include/experimental/unordered_set
+++ b/libstdc++-v3/include/experimental/unordered_set
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <unordered_set>
diff --git a/libstdc++-v3/include/experimental/utility b/libstdc++-v3/include/experimental/utility
index 61567313cce..cc335e02ccd 100644
--- a/libstdc++-v3/include/experimental/utility
+++ b/libstdc++-v3/include/experimental/utility
@@ -30,6 +30,8 @@
 #ifndef _GLIBCXX_EXPERIMENTAL_UTILITY
 #define _GLIBCXX_EXPERIMENTAL_UTILITY 1
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 #include <utility>
 #include <bits/uses_allocator.h>
diff --git a/libstdc++-v3/include/experimental/vector b/libstdc++-v3/include/experimental/vector
index 2b611fc1937..4e8c8461e44 100644
--- a/libstdc++-v3/include/experimental/vector
+++ b/libstdc++-v3/include/experimental/vector
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // experimental is currently omitted
+
 #if __cplusplus >= 201402L
 
 #include <vector>
diff --git a/libstdc++-v3/include/ext/algorithm b/libstdc++-v3/include/ext/algorithm
index f5eced66feb..65122dab5a3 100644
--- a/libstdc++-v3/include/ext/algorithm
+++ b/libstdc++-v3/include/ext/algorithm
@@ -58,6 +58,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <algorithm>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/bitmap_allocator.h b/libstdc++-v3/include/ext/bitmap_allocator.h
index 033f132148a..80b8fa779bb 100644
--- a/libstdc++-v3/include/ext/bitmap_allocator.h
+++ b/libstdc++-v3/include/ext/bitmap_allocator.h
@@ -29,6 +29,8 @@
 #ifndef _BITMAP_ALLOCATOR_H
 #define _BITMAP_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <utility> // For std::pair.
 #include <bits/functexcept.h> // For __throw_bad_alloc().
 #include <bits/stl_function.h> // For greater_equal, and less_equal.
diff --git a/libstdc++-v3/include/ext/cmath b/libstdc++-v3/include/ext/cmath
index 22919699003..2ebad8b0c85 100644
--- a/libstdc++-v3/include/ext/cmath
+++ b/libstdc++-v3/include/ext/cmath
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/ext/codecvt_specializations.h b/libstdc++-v3/include/ext/codecvt_specializations.h
index 51b638d7f29..7f733e67b0c 100644
--- a/libstdc++-v3/include/ext/codecvt_specializations.h
+++ b/libstdc++-v3/include/ext/codecvt_specializations.h
@@ -35,6 +35,8 @@
 #ifndef _EXT_CODECVT_SPECIALIZATIONS_H
 #define _EXT_CODECVT_SPECIALIZATIONS_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/c++config.h>
 #include <locale>
 #include <iconv.h>
diff --git a/libstdc++-v3/include/ext/debug_allocator.h b/libstdc++-v3/include/ext/debug_allocator.h
index 3490dca8c5d..06c15fb561c 100644
--- a/libstdc++-v3/include/ext/debug_allocator.h
+++ b/libstdc++-v3/include/ext/debug_allocator.h
@@ -42,6 +42,8 @@
 #ifndef _DEBUG_ALLOCATOR_H
 #define _DEBUG_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <stdexcept>
 #include <bits/functexcept.h>
 #include <ext/alloc_traits.h>
diff --git a/libstdc++-v3/include/ext/enc_filebuf.h b/libstdc++-v3/include/ext/enc_filebuf.h
index 12869a8b02d..fc3d9a88163 100644
--- a/libstdc++-v3/include/ext/enc_filebuf.h
+++ b/libstdc++-v3/include/ext/enc_filebuf.h
@@ -29,6 +29,8 @@
 #ifndef _EXT_ENC_FILEBUF_H
 #define _EXT_ENC_FILEBUF_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <fstream>
 #include <locale>
 #include <ext/codecvt_specializations.h>
diff --git a/libstdc++-v3/include/ext/extptr_allocator.h b/libstdc++-v3/include/ext/extptr_allocator.h
index 20f746e73b6..ad538c77169 100644
--- a/libstdc++-v3/include/ext/extptr_allocator.h
+++ b/libstdc++-v3/include/ext/extptr_allocator.h
@@ -36,6 +36,8 @@
 #ifndef _EXTPTR_ALLOCATOR_H
 #define _EXTPTR_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <memory>
 #include <ext/numeric_traits.h>
 #include <ext/pointer.h>
diff --git a/libstdc++-v3/include/ext/functional b/libstdc++-v3/include/ext/functional
index 19cd8d5b563..9cf864d9290 100644
--- a/libstdc++-v3/include/ext/functional
+++ b/libstdc++-v3/include/ext/functional
@@ -58,6 +58,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <functional>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/malloc_allocator.h b/libstdc++-v3/include/ext/malloc_allocator.h
index 82b3f0a1c6f..6323ed9b60d 100644
--- a/libstdc++-v3/include/ext/malloc_allocator.h
+++ b/libstdc++-v3/include/ext/malloc_allocator.h
@@ -29,6 +29,8 @@
 #ifndef _MALLOC_ALLOCATOR_H
 #define _MALLOC_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // malloc
+
 #include <cstdlib>
 #include <cstddef>
 #include <new>
diff --git a/libstdc++-v3/include/ext/memory b/libstdc++-v3/include/ext/memory
index 105952a3517..9e0082bd20a 100644
--- a/libstdc++-v3/include/ext/memory
+++ b/libstdc++-v3/include/ext/memory
@@ -58,6 +58,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <memory>
 #include <bits/stl_tempbuf.h>
 
diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h
index 393d6eb0ae7..49743e46d0c 100644
--- a/libstdc++-v3/include/ext/mt_allocator.h
+++ b/libstdc++-v3/include/ext/mt_allocator.h
@@ -29,6 +29,8 @@
 #ifndef _MT_ALLOCATOR_H
 #define _MT_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // getenv
+
 #include <new>
 #include <cstdlib>
 #include <bits/functexcept.h>
diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h
index 96e6523977a..db8895faf8e 100644
--- a/libstdc++-v3/include/ext/new_allocator.h
+++ b/libstdc++-v3/include/ext/new_allocator.h
@@ -29,6 +29,8 @@
 #ifndef _NEW_ALLOCATOR_H
 #define _NEW_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/new_allocator.h>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/numeric b/libstdc++-v3/include/ext/numeric
index 0b2c4ee0ba8..1d9f4f44747 100644
--- a/libstdc++-v3/include/ext/numeric
+++ b/libstdc++-v3/include/ext/numeric
@@ -58,6 +58,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/concept_check.h>
 #include <numeric>
 
diff --git a/libstdc++-v3/include/ext/pod_char_traits.h b/libstdc++-v3/include/ext/pod_char_traits.h
index fa0f5b607f7..95d90f3e2dc 100644
--- a/libstdc++-v3/include/ext/pod_char_traits.h
+++ b/libstdc++-v3/include/ext/pod_char_traits.h
@@ -34,6 +34,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <string>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/pointer.h b/libstdc++-v3/include/ext/pointer.h
index 04804f0287a..48b768499fd 100644
--- a/libstdc++-v3/include/ext/pointer.h
+++ b/libstdc++-v3/include/ext/pointer.h
@@ -38,7 +38,10 @@
 
 #pragma GCC system_header
 
-#include <iosfwd>
+#if _GLIBCXX_HOSTED
+#  include <iosfwd>
+#endif
+
 #include <bits/stl_iterator_base_types.h>
 #include <ext/cast.h>
 #include <ext/type_traits.h>
@@ -559,11 +562,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                const _Pointer_adapter<_Tp>& __rhs)
     { return !(__lhs._Tp::operator<(__rhs)); }
 
+#if _GLIBCXX_HOSTED
   template<typename _CharT, typename _Traits, typename _StoreT>
     inline std::basic_ostream<_CharT, _Traits>&
     operator<<(std::basic_ostream<_CharT, _Traits>& __os, 
                const _Pointer_adapter<_StoreT>& __p)
     { return (__os << __p.get()); }
+#endif // HOSTED
 
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
diff --git a/libstdc++-v3/include/ext/pool_allocator.h b/libstdc++-v3/include/ext/pool_allocator.h
index 8d0f08979f0..f04a88c8d6c 100644
--- a/libstdc++-v3/include/ext/pool_allocator.h
+++ b/libstdc++-v3/include/ext/pool_allocator.h
@@ -42,6 +42,8 @@
 #ifndef _POOL_ALLOCATOR_H
 #define _POOL_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/c++config.h>
 #include <cstdlib>
 #include <new>
diff --git a/libstdc++-v3/include/ext/random b/libstdc++-v3/include/ext/random
index 50505b876cc..4cc0e25e025 100644
--- a/libstdc++-v3/include/ext/random
+++ b/libstdc++-v3/include/ext/random
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/ext/random.tcc b/libstdc++-v3/include/ext/random.tcc
index 71ceea88278..7274e0d9f1a 100644
--- a/libstdc++-v3/include/ext/random.tcc
+++ b/libstdc++-v3/include/ext/random.tcc
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/ext/rb_tree b/libstdc++-v3/include/ext/rb_tree
index b61c45b2206..dd685fb2781 100644
--- a/libstdc++-v3/include/ext/rb_tree
+++ b/libstdc++-v3/include/ext/rb_tree
@@ -58,6 +58,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/stl_tree.h>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h
index f196d884380..21ccfc21e57 100644
--- a/libstdc++-v3/include/ext/rc_string_base.h
+++ b/libstdc++-v3/include/ext/rc_string_base.h
@@ -30,6 +30,8 @@
 #ifndef _RC_STRING_BASE_H
 #define _RC_STRING_BASE_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <ext/atomicity.h>
 #include <ext/alloc_traits.h>
 #include <bits/stl_iterator_base_funcs.h>
diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope
index f8af374f042..a5a821ebf03 100644
--- a/libstdc++-v3/include/ext/rope
+++ b/libstdc++-v3/include/ext/rope
@@ -45,6 +45,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <algorithm>
 #include <iosfwd>
 #include <bits/stl_construct.h>
diff --git a/libstdc++-v3/include/ext/ropeimpl.h b/libstdc++-v3/include/ext/ropeimpl.h
index 27cb7389d74..fe35d9162c1 100644
--- a/libstdc++-v3/include/ext/ropeimpl.h
+++ b/libstdc++-v3/include/ext/ropeimpl.h
@@ -1227,6 +1227,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 		__result = _S_concat(__forest[__i], __result);
 		__forest[__i]->_M_unref_nonnil();
 #if !defined(__GC) && __cpp_exceptions
+
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
 		__forest[__i] = 0;
 #endif
 	      }
diff --git a/libstdc++-v3/include/ext/slist b/libstdc++-v3/include/ext/slist
index 7b6f8820d2a..f2b5109b065 100644
--- a/libstdc++-v3/include/ext/slist
+++ b/libstdc++-v3/include/ext/slist
@@ -44,6 +44,8 @@
 #ifndef _SLIST
 #define _SLIST 1
 
+#include <bits/requires_hosted.h> // std::allocator
+
 #include <algorithm>
 #include <bits/allocator.h>
 #include <bits/stl_construct.h>
diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h
index f2209e704bf..db5dc437898 100644
--- a/libstdc++-v3/include/ext/sso_string_base.h
+++ b/libstdc++-v3/include/ext/sso_string_base.h
@@ -30,6 +30,8 @@
 #ifndef _SSO_STRING_BASE_H
 #define _SSO_STRING_BASE_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff --git a/libstdc++-v3/include/ext/stdio_filebuf.h b/libstdc++-v3/include/ext/stdio_filebuf.h
index 878839bf2ac..0e83e354276 100644
--- a/libstdc++-v3/include/ext/stdio_filebuf.h
+++ b/libstdc++-v3/include/ext/stdio_filebuf.h
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <fstream>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/stdio_sync_filebuf.h b/libstdc++-v3/include/ext/stdio_sync_filebuf.h
index 49437c96976..8f51ae275b7 100644
--- a/libstdc++-v3/include/ext/stdio_sync_filebuf.h
+++ b/libstdc++-v3/include/ext/stdio_sync_filebuf.h
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <streambuf>
 #include <cstdio>
 #include <bits/c++io.h>  // For __c_file
diff --git a/libstdc++-v3/include/ext/string_conversions.h b/libstdc++-v3/include/ext/string_conversions.h
index fc03974b5a0..a4648a9852f 100644
--- a/libstdc++-v3/include/ext/string_conversions.h
+++ b/libstdc++-v3/include/ext/string_conversions.h
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/ext/throw_allocator.h b/libstdc++-v3/include/ext/throw_allocator.h
index 220f5f5243f..a1b57e7e6d9 100644
--- a/libstdc++-v3/include/ext/throw_allocator.h
+++ b/libstdc++-v3/include/ext/throw_allocator.h
@@ -46,6 +46,8 @@
 #ifndef _THROW_ALLOCATOR_H
 #define _THROW_ALLOCATOR_H 1
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <cmath>
 #include <ctime>
 #include <map>
diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h
index 47cbabf24f1..f0a12d64589 100644
--- a/libstdc++-v3/include/ext/vstring.h
+++ b/libstdc++-v3/include/ext/vstring.h
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #if __cplusplus >= 201103L
 #include <initializer_list>
 #endif
diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc
index 0776fdcad1f..18e4bbb283e 100644
--- a/libstdc++-v3/include/ext/vstring.tcc
+++ b/libstdc++-v3/include/ext/vstring.tcc
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/cxxabi_forced.h>
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/ext/vstring_fwd.h b/libstdc++-v3/include/ext/vstring_fwd.h
index c787e95efed..121492b0652 100644
--- a/libstdc++-v3/include/ext/vstring_fwd.h
+++ b/libstdc++-v3/include/ext/vstring_fwd.h
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <bits/c++config.h>
 #include <bits/char_traits.h>
 #include <bits/allocator.h>
diff --git a/libstdc++-v3/include/ext/vstring_util.h b/libstdc++-v3/include/ext/vstring_util.h
index 713c6976d75..4e58a710894 100644
--- a/libstdc++-v3/include/ext/vstring_util.h
+++ b/libstdc++-v3/include/ext/vstring_util.h
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // GNU extensions are currently omitted
+
 #include <ext/vstring_fwd.h>
 #include <debug/debug.h>
 #include <bits/stl_function.h>  // For less
diff --git a/libstdc++-v3/include/std/algorithm b/libstdc++-v3/include/std/algorithm
index e2cfd7ca662..4b39bfce134 100644
--- a/libstdc++-v3/include/std/algorithm
+++ b/libstdc++-v3/include/std/algorithm
@@ -63,7 +63,7 @@
 # include <bits/ranges_algo.h>
 #endif
 
-#if __cplusplus > 201402L
+#if __cplusplus > 201402L && _GLIBCXX_HOSTED
 // Parallel STL algorithms
 # if _PSTL_EXECUTION_POLICIES_DEFINED
 // If <execution> has already been included, pull in implementations
@@ -76,7 +76,7 @@
 
 // Feature test macro for parallel algorithms
 # define __cpp_lib_parallel_algorithm 201603L
-#endif // C++17
+#endif // C++17 && HOSTED
 
 #ifdef _GLIBCXX_PARALLEL
 # include <parallel/algorithm>
diff --git a/libstdc++-v3/include/std/barrier b/libstdc++-v3/include/std/barrier
index 997e0a8f7ab..ab6dd8bd83d 100644
--- a/libstdc++-v3/include/std/barrier
+++ b/libstdc++-v3/include/std/barrier
@@ -40,6 +40,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // threading primitive
+
 #if __cplusplus > 201703L
 #include <bits/atomic_base.h>
 #if __cpp_lib_atomic_wait && __cpp_aligned_new
diff --git a/libstdc++-v3/include/std/charconv b/libstdc++-v3/include/std/charconv
index 533320ea085..64d0584a55d 100644
--- a/libstdc++-v3/include/std/charconv
+++ b/libstdc++-v3/include/std/charconv
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // for error codes
+
 // As an extension we support <charconv> in C++14, but this header should not
 // be included by any other library headers in C++14 mode. This ensures that
 // the names defined in this header are not added to namespace std unless a
@@ -44,7 +46,7 @@
 #include <ext/numeric_traits.h>
 
 #if _GLIBCXX_FLOAT_IS_IEEE_BINARY32 && _GLIBCXX_DOUBLE_IS_IEEE_BINARY64 \
-    && __SIZE_WIDTH__ >= 32
+    && __SIZE_WIDTH__ >= 32 && _GLIBCXX_HOSTED
 # define __cpp_lib_to_chars 201611L
 #endif
 
diff --git a/libstdc++-v3/include/std/chrono b/libstdc++-v3/include/std/chrono
index 3732a40962a..c0c3a679609 100644
--- a/libstdc++-v3/include/std/chrono
+++ b/libstdc++-v3/include/std/chrono
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // for <ctime> and clocks
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 06c4ff9ebdd..b885e1baa1b 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // threading primitive
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/deque b/libstdc++-v3/include/std/deque
index abdc2e04cdd..0b692f165bc 100644
--- a/libstdc++-v3/include/std/deque
+++ b/libstdc++-v3/include/std/deque
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers are hosted only
+
 #include <bits/stl_algobase.h>
 #include <bits/allocator.h>
 #include <bits/stl_construct.h>
diff --git a/libstdc++-v3/include/std/execution b/libstdc++-v3/include/std/execution
index e933a1a3655..17f62a278b9 100644
--- a/libstdc++-v3/include/std/execution
+++ b/libstdc++-v3/include/std/execution
@@ -27,6 +27,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // execution policies are hosted only
+
 #if __cplusplus >= 201703L
 # include <bits/c++config.h>
 # include <pstl/glue_execution_defs.h>
diff --git a/libstdc++-v3/include/std/filesystem b/libstdc++-v3/include/std/filesystem
index dd112a254ad..36d71dd38f5 100644
--- a/libstdc++-v3/include/std/filesystem
+++ b/libstdc++-v3/include/std/filesystem
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h>
+
 #if __cplusplus >= 201703L
 
 /**
diff --git a/libstdc++-v3/include/std/forward_list b/libstdc++-v3/include/std/forward_list
index fe99e5ed5ef..5d8052cb758 100644
--- a/libstdc++-v3/include/std/forward_list
+++ b/libstdc++-v3/include/std/forward_list
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream
index e62a1ade3c2..c43466451dd 100644
--- a/libstdc++-v3/include/std/fstream
+++ b/libstdc++-v3/include/std/fstream
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <istream>
 #include <ostream>
 #include <bits/codecvt.h>
diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional
index 5235ef20332..adf9cb1c546 100644
--- a/libstdc++-v3/include/std/functional
+++ b/libstdc++-v3/include/std/functional
@@ -1105,7 +1105,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     }
 
   // Searchers
-#define __cpp_lib_boyer_moore_searcher 201603L
 
   template<typename _ForwardIterator1, typename _BinaryPredicate = equal_to<>>
     class default_searcher
@@ -1138,6 +1137,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     };
 
 #if _GLIBCXX_HOSTED
+#define __cpp_lib_boyer_moore_searcher 201603L
+
   template<typename _Key, typename _Tp, typename _Hash, typename _Pred>
     struct __boyer_moore_map_base
     {
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index cf08c155a24..8c968fef1ee 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/iomanip b/libstdc++-v3/include/std/iomanip
index 53716813993..f73519d2e0b 100644
--- a/libstdc++-v3/include/std/iomanip
+++ b/libstdc++-v3/include/std/iomanip
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <bits/c++config.h>
 #include <iosfwd>
 #include <bits/ios_base.h>
diff --git a/libstdc++-v3/include/std/ios b/libstdc++-v3/include/std/ios
index 50a66cd9886..c759986a4ae 100644
--- a/libstdc++-v3/include/std/ios
+++ b/libstdc++-v3/include/std/ios
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <iosfwd>
 #include <exception> 		// For ios_base::failure
 #include <bits/char_traits.h> 	// For char_traits, streamoff, streamsize, fpos
diff --git a/libstdc++-v3/include/std/iosfwd b/libstdc++-v3/include/std/iosfwd
index ddf0c953856..7f156f85c02 100644
--- a/libstdc++-v3/include/std/iosfwd
+++ b/libstdc++-v3/include/std/iosfwd
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <bits/c++config.h>
 #include <bits/stringfwd.h> 	// For string forward declarations.
 #include <bits/postypes.h>
diff --git a/libstdc++-v3/include/std/iostream b/libstdc++-v3/include/std/iostream
index d705913f53c..685d29a32f4 100644
--- a/libstdc++-v3/include/std/iostream
+++ b/libstdc++-v3/include/std/iostream
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <bits/c++config.h>
 #include <ostream>
 #include <istream>
diff --git a/libstdc++-v3/include/std/istream b/libstdc++-v3/include/std/istream
index 416ef556fa1..58716ce1d45 100644
--- a/libstdc++-v3/include/std/istream
+++ b/libstdc++-v3/include/std/istream
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <ios>
 #include <ostream>
 
diff --git a/libstdc++-v3/include/std/iterator b/libstdc++-v3/include/std/iterator
index fb2a47c0dbb..8ee83272561 100644
--- a/libstdc++-v3/include/std/iterator
+++ b/libstdc++-v3/include/std/iterator
@@ -71,4 +71,8 @@
 # define __cpp_lib_null_iterators 201304L
 #endif
 
+#if __cplusplus >= 202002L
+#include <bits/ranges_base.h> // ranges::distance, ranges::next, ranges::prev
+#endif
+
 #endif /* _GLIBCXX_ITERATOR */
diff --git a/libstdc++-v3/include/std/latch b/libstdc++-v3/include/std/latch
index 7ae90228d8f..0442f095065 100644
--- a/libstdc++-v3/include/std/latch
+++ b/libstdc++-v3/include/std/latch
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus > 201703L
 
 #include <bits/atomic_base.h>
diff --git a/libstdc++-v3/include/std/list b/libstdc++-v3/include/std/list
index 9151e98cb88..ec174edb976 100644
--- a/libstdc++-v3/include/std/list
+++ b/libstdc++-v3/include/std/list
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <bits/stl_algobase.h>
 #include <bits/allocator.h>
 #include <bits/range_access.h>
diff --git a/libstdc++-v3/include/std/locale b/libstdc++-v3/include/std/locale
index ae83586d668..abfed052979 100644
--- a/libstdc++-v3/include/std/locale
+++ b/libstdc++-v3/include/std/locale
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // locales
+
 #include <bits/localefwd.h>
 #include <bits/locale_classes.h>
 #include <bits/locale_facets.h>
diff --git a/libstdc++-v3/include/std/map b/libstdc++-v3/include/std/map
index ce07f29ee09..c973a8e6eca 100644
--- a/libstdc++-v3/include/std/map
+++ b/libstdc++-v3/include/std/map
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <bits/stl_tree.h>
 #include <bits/stl_map.h>
 #include <bits/stl_multimap.h>
diff --git a/libstdc++-v3/include/std/memory b/libstdc++-v3/include/std/memory
index 3eff12108f1..4336724c928 100644
--- a/libstdc++-v3/include/std/memory
+++ b/libstdc++-v3/include/std/memory
@@ -63,10 +63,10 @@
 #include <bits/memoryfwd.h>
 #if _GLIBCXX_HOSTED
 # include <bits/allocator.h>
+# include <bits/stl_tempbuf.h>
 #endif
 #include <bits/stl_construct.h>
 #include <bits/stl_uninitialized.h>
-#include <bits/stl_tempbuf.h>
 #include <bits/stl_raw_storage_iter.h>
 
 #if __cplusplus >= 201103L
diff --git a/libstdc++-v3/include/std/memory_resource b/libstdc++-v3/include/std/memory_resource
index 19c922516d5..323956eb7bf 100644
--- a/libstdc++-v3/include/std/memory_resource
+++ b/libstdc++-v3/include/std/memory_resource
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // polymorphic allocation
+
 #if __cplusplus >= 201703L
 
 #include <bits/memory_resource.h>
diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex
index b9590bbf276..b310c15687d 100644
--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/numeric b/libstdc++-v3/include/std/numeric
index 60a99d18ffd..0f1f26cd0c4 100644
--- a/libstdc++-v3/include/std/numeric
+++ b/libstdc++-v3/include/std/numeric
@@ -729,7 +729,7 @@ namespace __detail
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
-#if __cplusplus >= 201703L
+#if __cplusplus >= 201703L && _GLIBCXX_HOSTED
 // Parallel STL algorithms
 # if _PSTL_EXECUTION_POLICIES_DEFINED
 // If <execution> has already been included, pull in implementations
diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream
index 291ea40b355..674decf73cf 100644
--- a/libstdc++-v3/include/std/ostream
+++ b/libstdc++-v3/include/std/ostream
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <ios>
 #include <bits/ostream_insert.h>
 
diff --git a/libstdc++-v3/include/std/queue b/libstdc++-v3/include/std/queue
index db81ef1e6c7..7c4952ff281 100644
--- a/libstdc++-v3/include/std/queue
+++ b/libstdc++-v3/include/std/queue
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <deque>
 #include <vector>
 #include <bits/stl_heap.h>
diff --git a/libstdc++-v3/include/std/random b/libstdc++-v3/include/std/random
index 89a2f16c921..66757f78be3 100644
--- a/libstdc++-v3/include/std/random
+++ b/libstdc++-v3/include/std/random
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // OS-dependent random
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/regex b/libstdc++-v3/include/std/regex
index 491bced23b5..aa50c7e1165 100644
--- a/libstdc++-v3/include/std/regex
+++ b/libstdc++-v3/include/std/regex
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // string and container heavy
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/semaphore b/libstdc++-v3/include/std/semaphore
index 8a31c6d1f70..72d68dd33a1 100644
--- a/libstdc++-v3/include/std/semaphore
+++ b/libstdc++-v3/include/std/semaphore
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus > 201703L
 #include <bits/semaphore_base.h>
 
diff --git a/libstdc++-v3/include/std/set b/libstdc++-v3/include/std/set
index 551c77727f1..4cbcba1dc2f 100644
--- a/libstdc++-v3/include/std/set
+++ b/libstdc++-v3/include/std/set
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <bits/stl_tree.h>
 #include <bits/stl_set.h>
 #include <bits/stl_multiset.h>
diff --git a/libstdc++-v3/include/std/shared_mutex b/libstdc++-v3/include/std/shared_mutex
index 817a9587d87..cf74b32f185 100644
--- a/libstdc++-v3/include/std/shared_mutex
+++ b/libstdc++-v3/include/std/shared_mutex
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus >= 201402L
 
 #include <bits/chrono.h>
diff --git a/libstdc++-v3/include/std/spanstream b/libstdc++-v3/include/std/spanstream
index 5855b286efe..6abf013d41b 100644
--- a/libstdc++-v3/include/std/spanstream
+++ b/libstdc++-v3/include/std/spanstream
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #if __cplusplus > 202002L
 #include <span>
 #include <streambuf>
diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index bc7d636e702..7305bdbecf4 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostream
+
 #include <istream>
 #include <ostream>
 #include <bits/alloc_traits.h> // allocator_traits, __allocator_like
diff --git a/libstdc++-v3/include/std/stack b/libstdc++-v3/include/std/stack
index fc14e2edc2e..98d21236dc1 100644
--- a/libstdc++-v3/include/std/stack
+++ b/libstdc++-v3/include/std/stack
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <deque>
 #include <bits/stl_stack.h>
 
diff --git a/libstdc++-v3/include/std/stacktrace b/libstdc++-v3/include/std/stacktrace
index 39472d7236a..e7cbbee5638 100644
--- a/libstdc++-v3/include/std/stacktrace
+++ b/libstdc++-v3/include/std/stacktrace
@@ -26,6 +26,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // std::string bound
+
 #include <bits/c++config.h>
 
 #if __cplusplus > 202002L && _GLIBCXX_HAVE_STACKTRACE
diff --git a/libstdc++-v3/include/std/stop_token b/libstdc++-v3/include/std/stop_token
index 07d4fdafeb4..f1968343a1e 100644
--- a/libstdc++-v3/include/std/stop_token
+++ b/libstdc++-v3/include/std/stop_token
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_STOP_TOKEN
 #define _GLIBCXX_STOP_TOKEN
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus > 201703L
 
 #include <atomic>
diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf
index 888611d12aa..d8893df580f 100644
--- a/libstdc++-v3/include/std/streambuf
+++ b/libstdc++-v3/include/std/streambuf
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <bits/c++config.h>
 #include <iosfwd>
 #include <bits/localefwd.h>
diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string
index 62ecdb3af45..41e6e2cb92b 100644
--- a/libstdc++-v3/include/std/string
+++ b/libstdc++-v3/include/std/string
@@ -35,6 +35,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #include <bits/c++config.h>
 #include <bits/stringfwd.h>
 #include <bits/char_traits.h>
diff --git a/libstdc++-v3/include/std/syncstream b/libstdc++-v3/include/std/syncstream
index 7a4f731ddd9..838cec591b7 100644
--- a/libstdc++-v3/include/std/syncstream
+++ b/libstdc++-v3/include/std/syncstream
@@ -38,6 +38,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // iostreams
+
 #include <sstream>
 
 #include <bits/alloc_traits.h>
diff --git a/libstdc++-v3/include/std/system_error b/libstdc++-v3/include/std/system_error
index e12bb2f0e1e..6dad75d26bc 100644
--- a/libstdc++-v3/include/std/system_error
+++ b/libstdc++-v3/include/std/system_error
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // OS-dependent
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/thread b/libstdc++-v3/include/std/thread
index 82f191afe2d..a314b9eb9bf 100644
--- a/libstdc++-v3/include/std/thread
+++ b/libstdc++-v3/include/std/thread
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // concurrency
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/unordered_map b/libstdc++-v3/include/std/unordered_map
index b50ec2a8de2..323edcd722d 100644
--- a/libstdc++-v3/include/std/unordered_map
+++ b/libstdc++-v3/include/std/unordered_map
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // container
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/unordered_set b/libstdc++-v3/include/std/unordered_set
index edaa517635b..998417f5d14 100644
--- a/libstdc++-v3/include/std/unordered_set
+++ b/libstdc++-v3/include/std/unordered_set
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // containers
+
 #if __cplusplus < 201103L
 # include <bits/c++0x_warning.h>
 #else
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 87fec2b6df3..90bbed77696 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -33,6 +33,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // <cmath> dependant
+
 #include <bits/c++config.h>
 #include <cmath>
 #include <algorithm>
diff --git a/libstdc++-v3/include/std/vector b/libstdc++-v3/include/std/vector
index d7f69fd7a48..75377d5c7cc 100644
--- a/libstdc++-v3/include/std/vector
+++ b/libstdc++-v3/include/std/vector
@@ -57,6 +57,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // container
+
 #include <bits/stl_algobase.h>
 #include <bits/allocator.h>
 #include <bits/stl_construct.h>
diff --git a/libstdc++-v3/include/std/version b/libstdc++-v3/include/std/version
index 3fd5182d51d..397a4aa7b0a 100644
--- a/libstdc++-v3/include/std/version
+++ b/libstdc++-v3/include/std/version
@@ -46,11 +46,11 @@
 
 #if __cplusplus >= 201103L
 // c++11
+#define __cpp_lib_allocator_traits_is_always_equal 201411L
 #define __cpp_lib_is_null_pointer 201309L
 #define __cpp_lib_result_of_sfinae 201210L
 
 #if _GLIBCXX_HOSTED
-# define __cpp_lib_allocator_traits_is_always_equal 201411L
 #if __cplusplus <= 201703L // N.B. updated value in C++20
 # define __cpp_lib_shared_ptr_arrays 201611L
 #endif
@@ -73,35 +73,38 @@
 #if __cpp_impl_coroutine
 # define __cpp_lib_coroutine 201902L
 #endif
+#define __cpp_lib_exchange_function 201304L
+#define __cpp_lib_integer_sequence 201304L
 #define __cpp_lib_integral_constant_callable 201304L
 #define __cpp_lib_is_final 201402L
+#define __cpp_lib_make_reverse_iterator 201402L
+#ifndef _GLIBCXX_DEBUG // PR libstdc++/70303
+# define __cpp_lib_null_iterators 201304L
+#endif
 #define __cpp_lib_transformation_trait_aliases 201304L
+#define __cpp_lib_transparent_operators 201510L
+#define __cpp_lib_tuple_element_t 201402L
+#define __cpp_lib_tuples_by_type 201304L
 
 #if _GLIBCXX_HOSTED
 # define __cpp_lib_chrono_udls 201304L
 # define __cpp_lib_complex_udls 201309L
-# define __cpp_lib_exchange_function 201304L
 # define __cpp_lib_generic_associative_lookup 201304L
-# define __cpp_lib_integer_sequence 201304L
-# define __cpp_lib_make_reverse_iterator 201402L
 # define __cpp_lib_make_unique 201304L
-# ifndef _GLIBCXX_DEBUG // PR libstdc++/70303
-#  define __cpp_lib_null_iterators 201304L
-# endif
 # define __cpp_lib_quoted_string_io 201304L
 # define __cpp_lib_robust_nonmodifying_seq_ops 201304L
 # ifdef _GLIBCXX_HAS_GTHREADS
 #  define __cpp_lib_shared_timed_mutex 201402L
 # endif
 # define __cpp_lib_string_udls 201304L
-# define __cpp_lib_transparent_operators 201510L
-# define __cpp_lib_tuple_element_t 201402L
-# define __cpp_lib_tuples_by_type 201304L
 #endif
 
 #if __cplusplus >= 201703L
 // c++17
 #define __cpp_lib_addressof_constexpr 201603L
+#define __cpp_lib_any 201606L
+#define __cpp_lib_apply 201603L
+#define __cpp_lib_as_const 201510L
 #define __cpp_lib_atomic_is_always_lock_free 201603L
 #define __cpp_lib_bool_constant 201505L
 #define __cpp_lib_byte 201603L
@@ -111,6 +114,7 @@
 #ifdef __GCC_DESTRUCTIVE_SIZE
 # define __cpp_lib_hardware_interference_size 201703L
 #endif
+#define __cpp_lib_invoke 201411L
 #ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE
 # define __cpp_lib_is_aggregate 201703L
 #endif
@@ -120,17 +124,23 @@
 # define __cpp_lib_launder 201606L
 #endif
 #define __cpp_lib_logical_traits 201510L
+#define __cpp_lib_make_from_tuple 201606L
+#define __cpp_lib_not_fn 201603L
+#if __cplusplus == 201703L // N.B. updated value in C++20
+# define __cpp_lib_optional 201606L
+#endif
 #define __cpp_lib_type_trait_variable_templates 201510L
 #define __cpp_lib_uncaught_exceptions 201411L
+#if !(__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L)
+// N.B. updated value in C++20
+# define __cpp_lib_variant 202102L
+#endif
 #define __cpp_lib_void_t 201411L
 
 #if _GLIBCXX_HOSTED
-#define __cpp_lib_any 201606L
-#define __cpp_lib_apply 201603L
 #if __cplusplus == 201703L // N.B. updated value in C++20
 # define __cpp_lib_array_constexpr 201803L
 #endif
-#define __cpp_lib_as_const 201510L
 #define __cpp_lib_boyer_moore_searcher 201603L
 #define __cpp_lib_chrono 201611L
 #define __cpp_lib_clamp 201603L
@@ -146,9 +156,7 @@
 #define __cpp_lib_gcd 201606L
 #define __cpp_lib_gcd_lcm 201606L
 #define __cpp_lib_hypot 201603L
-#define __cpp_lib_invoke 201411L
 #define __cpp_lib_lcm 201606L
-#define __cpp_lib_make_from_tuple 201606L
 #define __cpp_lib_map_try_emplace 201411L
 #define __cpp_lib_math_special_functions 201603L
 #ifdef _GLIBCXX_HAS_GTHREADS
@@ -158,10 +166,6 @@
 #endif
 #define __cpp_lib_node_extract 201606L
 #define __cpp_lib_nonmember_container_access 201411L
-#define __cpp_lib_not_fn 201603L
-#if __cplusplus == 201703L // N.B. updated value in C++20
-# define __cpp_lib_optional 201606L
-#endif
 #define __cpp_lib_parallel_algorithm 201603L
 #define __cpp_lib_raw_memory_algorithms 201606L
 #define __cpp_lib_sample 201603L
@@ -176,18 +180,16 @@
 # define __cpp_lib_to_chars 201611L
 #endif
 #define __cpp_lib_unordered_map_try_emplace 201411L
-#if !(__cpp_concepts >= 202002L && __cpp_constexpr >= 201811L)
-// N.B. updated value in C++20
-# define __cpp_lib_variant 202102L
-#endif
 #endif
 
 #if __cplusplus >= 202002L
 // c++20
+#define __cpp_lib_assume_aligned 201811L
 #define __cpp_lib_atomic_flag_test 201907L
 #define __cpp_lib_atomic_float 201711L
 #define __cpp_lib_atomic_ref 201806L
 #define __cpp_lib_atomic_value_initialization 201911L
+#define __cpp_lib_bind_front 201907L
 #if __has_builtin(__builtin_bit_cast)
 # define __cpp_lib_bit_cast 201806L
 #endif
@@ -202,6 +204,7 @@
 #endif
 #define __cpp_lib_endian 201907L
 #define __cpp_lib_int_pow2 202002L
+#define __cpp_lib_integer_comparison_functions 202002L
 #ifdef _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED
 # define __cpp_lib_is_constant_evaluated 201811L
 #endif
@@ -214,19 +217,32 @@
  && __has_builtin(__builtin_is_pointer_interconvertible_with_class)
 # define __cpp_lib_is_pointer_interconvertible 201907L
 #endif
+#define __cpp_lib_math_constants 201907L
+#if __cpp_lib_concepts
+# define __cpp_lib_make_obj_using_allocator 201811L
+#endif
+#define __cpp_lib_optional 202106L
 #define __cpp_lib_remove_cvref 201711L
 #if __has_builtin(__builtin_source_location)
 # define __cpp_lib_source_location 201907L
 #endif
+#if __cpp_lib_concepts
+# define __cpp_lib_span 202002L
+#endif
+#define __cpp_lib_ssize 201902L
 #if __cpp_impl_three_way_comparison >= 201907L && __cpp_lib_concepts
 # define __cpp_lib_three_way_comparison 201907L
 #endif
+#define __cpp_lib_to_address 201711L
+#define __cpp_lib_to_array 201907L
 #define __cpp_lib_type_identity 201806L
 #define __cpp_lib_unwrap_ref 201811L
+#if __cpp_concepts >= 202002L && __cpp_constexpr >= 201811L
+# define __cpp_lib_variant 202106L
+#endif
 
 #if _GLIBCXX_HOSTED
 #define __cpp_lib_array_constexpr 201811L
-#define __cpp_lib_assume_aligned 201811L
 #define __cpp_lib_atomic_shared_ptr 201711L
 #if defined _GLIBCXX_HAS_GTHREADS || defined _GLIBCXX_HAVE_LINUX_FUTEX
 # define __cpp_lib_atomic_wait 201907L
@@ -234,9 +250,7 @@
 #  define __cpp_lib_barrier 201907L
 # endif
 #endif
-#define __cpp_lib_bind_front 201907L
 // FIXME: #define __cpp_lib_execution 201902L
-#define __cpp_lib_integer_comparison_functions 202002L
 #define __cpp_lib_constexpr_algorithms 201806L
 #ifdef __cpp_lib_is_constant_evaluated
 # define __cpp_lib_constexpr_char_traits 201811L
@@ -268,11 +282,6 @@
 # define __cpp_lib_latch 201907L
 #endif
 #define __cpp_lib_list_remove_return_type 201806L
-#if __cpp_lib_concepts
-# define __cpp_lib_make_obj_using_allocator 201811L
-#endif
-#define __cpp_lib_math_constants 201907L
-#define __cpp_lib_optional 202106L
 #define __cpp_lib_polymorphic_allocator 201902L
 #if __cpp_lib_concepts
 # define __cpp_lib_ranges 202110L
@@ -283,28 +292,29 @@
 #define __cpp_lib_shared_ptr_arrays 201707L
 #define __cpp_lib_shift 201806L
 #define __cpp_lib_smart_ptr_for_overwrite 202002L
-#if __cpp_lib_concepts
-# define __cpp_lib_span 202002L
-#endif
-#define __cpp_lib_ssize 201902L
 #define __cpp_lib_starts_ends_with 201711L
 # if _GLIBCXX_USE_CXX11_ABI
 // Only supported with cxx11-abi
 #  define __cpp_lib_syncbuf 201803L
 # endif
-#define __cpp_lib_to_address 201711L
-#define __cpp_lib_to_array 201907L
-#if __cpp_concepts >= 202002L && __cpp_constexpr >= 201811L
-# define __cpp_lib_variant 202106L
-#endif
 #endif
 
 #if __cplusplus > 202002L
 // c++23
 #define __cpp_lib_byteswap 202110L
 #define __cpp_lib_constexpr_typeinfo 202106L
+#if __cpp_concepts >= 202002L
+# define __cpp_lib_expected 202202L
+#endif
+#define __cpp_lib_invoke_r 202106L
 #define __cpp_lib_is_scoped_enum 202011L
+#if __cpp_lib_concepts
+# undef __cpp_lib_optional
+# define __cpp_lib_optional 202110L
+#endif
 #define __cpp_lib_reference_from_temporary 202202L
+#define __cpp_lib_to_underlying 202102L
+#define __cpp_lib_unreachable 202202L
 
 #if _GLIBCXX_HOSTED
 #define __cpp_lib_adaptor_iterator_pair_constructor 202106L
@@ -313,15 +323,7 @@
 # undef __cpp_lib_constexpr_memory
 # define __cpp_lib_constexpr_memory 202202L
 #endif
-#if __cpp_concepts >= 202002L
-# define __cpp_lib_expected 202202L
-#endif
-#define __cpp_lib_invoke_r 202106L
 #define __cpp_lib_ios_noreplace 202207L
-#if __cpp_lib_concepts
-# undef __cpp_lib_optional
-# define __cpp_lib_optional 202110L
-#endif
 #define __cpp_lib_move_only_function 202110L
 #if __cpp_lib_span
 # define __cpp_lib_spanstream 202106L
@@ -334,8 +336,6 @@
 #if _GLIBCXX_USE_CXX11_ABI // Only supported with cxx11-abi
 # define __cpp_lib_string_resize_and_overwrite 202110L
 #endif
-#define __cpp_lib_to_underlying 202102L
-#define __cpp_lib_unreachable 202202L
 #endif
 #endif // C++23
 #endif // C++20
diff --git a/libstdc++-v3/include/tr1/array b/libstdc++-v3/include/tr1/array
index 2aac0ed8106..f03ad810f60 100644
--- a/libstdc++-v3/include/tr1/array
+++ b/libstdc++-v3/include/tr1/array
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/stl_algobase.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/tr1/ccomplex b/libstdc++-v3/include/tr1/ccomplex
index 8f9546e24df..1b632be1aad 100644
--- a/libstdc++-v3/include/tr1/ccomplex
+++ b/libstdc++-v3/include/tr1/ccomplex
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CCOMPLEX
 #define _GLIBCXX_TR1_CCOMPLEX 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/complex>
 
 #endif // _GLIBCXX_TR1_CCOMPLEX
diff --git a/libstdc++-v3/include/tr1/cctype b/libstdc++-v3/include/tr1/cctype
index 43520c7a2c1..2c4a15b4edc 100644
--- a/libstdc++-v3/include/tr1/cctype
+++ b/libstdc++-v3/include/tr1/cctype
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CCTYPE
 #define _GLIBCXX_TR1_CCTYPE 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 #include <cctype>
 
diff --git a/libstdc++-v3/include/tr1/cfenv b/libstdc++-v3/include/tr1/cfenv
index 202fe27229c..37e06c641b9 100644
--- a/libstdc++-v3/include/tr1/cfenv
+++ b/libstdc++-v3/include/tr1/cfenv
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 
 #if _GLIBCXX_HAVE_FENV_H
diff --git a/libstdc++-v3/include/tr1/cfloat b/libstdc++-v3/include/tr1/cfloat
index 24565138b91..76bfcfb4e6c 100644
--- a/libstdc++-v3/include/tr1/cfloat
+++ b/libstdc++-v3/include/tr1/cfloat
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CFLOAT
 #define _GLIBCXX_TR1_CFLOAT 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cfloat>
 
 #ifndef DECIMAL_DIG
diff --git a/libstdc++-v3/include/tr1/cinttypes b/libstdc++-v3/include/tr1/cinttypes
index a04cf24720f..24b46482771 100644
--- a/libstdc++-v3/include/tr1/cinttypes
+++ b/libstdc++-v3/include/tr1/cinttypes
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdint>
 
 // For 8.11.1/1 (see C99, Note 184)
diff --git a/libstdc++-v3/include/tr1/climits b/libstdc++-v3/include/tr1/climits
index 95e3bc3b4da..0d702dcdaec 100644
--- a/libstdc++-v3/include/tr1/climits
+++ b/libstdc++-v3/include/tr1/climits
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CLIMITS
 #define _GLIBCXX_TR1_CLIMITS 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <climits>
 
 #ifndef LLONG_MIN
diff --git a/libstdc++-v3/include/tr1/cmath b/libstdc++-v3/include/tr1/cmath
index f3a53f3c5b2..384f1169524 100644
--- a/libstdc++-v3/include/tr1/cmath
+++ b/libstdc++-v3/include/tr1/cmath
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cmath>
 
 #ifdef _GLIBCXX_USE_C99_MATH_TR1
diff --git a/libstdc++-v3/include/tr1/complex b/libstdc++-v3/include/tr1/complex
index abb5e13fe23..fa88cd5017c 100644
--- a/libstdc++-v3/include/tr1/complex
+++ b/libstdc++-v3/include/tr1/complex
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <complex>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/tr1/complex.h b/libstdc++-v3/include/tr1/complex.h
index f2824784f60..c5fb4c103d7 100644
--- a/libstdc++-v3/include/tr1/complex.h
+++ b/libstdc++-v3/include/tr1/complex.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_COMPLEX_H
 #define _GLIBCXX_TR1_COMPLEX_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/ccomplex>
 
 #endif // _GLIBCXX_TR1_COMPLEX_H
diff --git a/libstdc++-v3/include/tr1/cstdarg b/libstdc++-v3/include/tr1/cstdarg
index f28ff2a602d..f046e816251 100644
--- a/libstdc++-v3/include/tr1/cstdarg
+++ b/libstdc++-v3/include/tr1/cstdarg
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CSTDARG
 #define _GLIBCXX_TR1_CSTDARG 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cstdarg>
 
 #endif // _GLIBCXX_TR1_CSTDARG
diff --git a/libstdc++-v3/include/tr1/cstdbool b/libstdc++-v3/include/tr1/cstdbool
index 77c03156248..20afb63be52 100644
--- a/libstdc++-v3/include/tr1/cstdbool
+++ b/libstdc++-v3/include/tr1/cstdbool
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 
 #if _GLIBCXX_HAVE_STDBOOL_H
diff --git a/libstdc++-v3/include/tr1/cstdint b/libstdc++-v3/include/tr1/cstdint
index 0d13b30daa4..9e3e45c76aa 100644
--- a/libstdc++-v3/include/tr1/cstdint
+++ b/libstdc++-v3/include/tr1/cstdint
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 
 // For 8.22.1/1 (see C99, Notes 219, 220, 222)
diff --git a/libstdc++-v3/include/tr1/cstdio b/libstdc++-v3/include/tr1/cstdio
index 4692d213d4d..dcbff6a0eb4 100644
--- a/libstdc++-v3/include/tr1/cstdio
+++ b/libstdc++-v3/include/tr1/cstdio
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cstdio>
 
 #if _GLIBCXX_USE_C99_STDIO
diff --git a/libstdc++-v3/include/tr1/cstdlib b/libstdc++-v3/include/tr1/cstdlib
index de952bb1619..5569b0dca65 100644
--- a/libstdc++-v3/include/tr1/cstdlib
+++ b/libstdc++-v3/include/tr1/cstdlib
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cstdlib>
 
 #if _GLIBCXX_HOSTED
diff --git a/libstdc++-v3/include/tr1/ctgmath b/libstdc++-v3/include/tr1/ctgmath
index 64ef40544e7..15ada9c9255 100644
--- a/libstdc++-v3/include/tr1/ctgmath
+++ b/libstdc++-v3/include/tr1/ctgmath
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CTGMATH
 #define _GLIBCXX_TR1_CTGMATH 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cmath>
 
 #endif // _GLIBCXX_TR1_CTGMATH
diff --git a/libstdc++-v3/include/tr1/ctime b/libstdc++-v3/include/tr1/ctime
index 8b9b8699b73..99b529a0f50 100644
--- a/libstdc++-v3/include/tr1/ctime
+++ b/libstdc++-v3/include/tr1/ctime
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_CTIME
 #define _GLIBCXX_TR1_CTIME 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <ctime>
 
 #endif // _GLIBCXX_TR1_CTIME
diff --git a/libstdc++-v3/include/tr1/ctype.h b/libstdc++-v3/include/tr1/ctype.h
index 91177ff7d7c..014fc2b0a53 100644
--- a/libstdc++-v3/include/tr1/ctype.h
+++ b/libstdc++-v3/include/tr1/ctype.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_CTYPE_H
 #define _TR1_CTYPE_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cctype>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/cwchar b/libstdc++-v3/include/tr1/cwchar
index 23219bc2d6b..1140edaa965 100644
--- a/libstdc++-v3/include/tr1/cwchar
+++ b/libstdc++-v3/include/tr1/cwchar
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cwchar>
 
 #ifdef _GLIBCXX_USE_WCHAR_T
diff --git a/libstdc++-v3/include/tr1/cwctype b/libstdc++-v3/include/tr1/cwctype
index 1a71dd05d26..ddb25af4cfc 100644
--- a/libstdc++-v3/include/tr1/cwctype
+++ b/libstdc++-v3/include/tr1/cwctype
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cwctype>
 
 #ifdef _GLIBCXX_USE_WCHAR_T
diff --git a/libstdc++-v3/include/tr1/fenv.h b/libstdc++-v3/include/tr1/fenv.h
index 091b0b8a83d..2547f003fdb 100644
--- a/libstdc++-v3/include/tr1/fenv.h
+++ b/libstdc++-v3/include/tr1/fenv.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_FENV_H
 #define _TR1_FENV_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cfenv>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/float.h b/libstdc++-v3/include/tr1/float.h
index 23670789d68..1dd3ef13f40 100644
--- a/libstdc++-v3/include/tr1/float.h
+++ b/libstdc++-v3/include/tr1/float.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_FLOAT_H
 #define _TR1_FLOAT_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cfloat>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional
index 83d22bed9e5..ae219ab9678 100644
--- a/libstdc++-v3/include/tr1/functional
+++ b/libstdc++-v3/include/tr1/functional
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <functional> // for std::_Placeholder, std::_Bind, std::_Bind_result
 
 #include <typeinfo>
diff --git a/libstdc++-v3/include/tr1/inttypes.h b/libstdc++-v3/include/tr1/inttypes.h
index 22a75144bb8..eb5ddbe5123 100644
--- a/libstdc++-v3/include/tr1/inttypes.h
+++ b/libstdc++-v3/include/tr1/inttypes.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_INTTYPES_H
 #define _GLIBCXX_TR1_INTTYPES_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cinttypes>
 
 #endif // _GLIBCXX_TR1_INTTYPES_H
diff --git a/libstdc++-v3/include/tr1/limits.h b/libstdc++-v3/include/tr1/limits.h
index b54f9d2ed0f..73baf85cc94 100644
--- a/libstdc++-v3/include/tr1/limits.h
+++ b/libstdc++-v3/include/tr1/limits.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_LIMITS_H
 #define _TR1_LIMITS_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/climits>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/math.h b/libstdc++-v3/include/tr1/math.h
index 423b5ea0ad7..99c8f45b523 100644
--- a/libstdc++-v3/include/tr1/math.h
+++ b/libstdc++-v3/include/tr1/math.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_MATH_H
 #define _GLIBCXX_TR1_MATH_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cmath>
 
 #if _GLIBCXX_USE_C99_MATH_TR1
diff --git a/libstdc++-v3/include/tr1/memory b/libstdc++-v3/include/tr1/memory
index b50a5588a40..759000b2b93 100644
--- a/libstdc++-v3/include/tr1/memory
+++ b/libstdc++-v3/include/tr1/memory
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #if defined(_GLIBCXX_INCLUDE_AS_CXX11)
 #  error TR1 header cannot be included from C++11 header
 #endif
diff --git a/libstdc++-v3/include/tr1/random b/libstdc++-v3/include/tr1/random
index cb5754082e2..f9fbd4d625a 100644
--- a/libstdc++-v3/include/tr1/random
+++ b/libstdc++-v3/include/tr1/random
@@ -32,6 +32,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <cmath>
 #include <cstdio>
 #include <cstdlib>
diff --git a/libstdc++-v3/include/tr1/regex b/libstdc++-v3/include/tr1/regex
index 10db3725723..bcdea9d7881 100644
--- a/libstdc++-v3/include/tr1/regex
+++ b/libstdc++-v3/include/tr1/regex
@@ -33,6 +33,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <algorithm>
 #include <bitset>
 #include <iterator>
diff --git a/libstdc++-v3/include/tr1/stdarg.h b/libstdc++-v3/include/tr1/stdarg.h
index 446dda16b1a..4622f3338be 100644
--- a/libstdc++-v3/include/tr1/stdarg.h
+++ b/libstdc++-v3/include/tr1/stdarg.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_STDARG_H
 #define _TR1_STDARG_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdarg>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/stdbool.h b/libstdc++-v3/include/tr1/stdbool.h
index 76d0b729e79..368e891dd3c 100644
--- a/libstdc++-v3/include/tr1/stdbool.h
+++ b/libstdc++-v3/include/tr1/stdbool.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_STDBOOL_H
 #define _TR1_STDBOOL_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdbool>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/stdint.h b/libstdc++-v3/include/tr1/stdint.h
index 59c1d958fdb..b19361b3053 100644
--- a/libstdc++-v3/include/tr1/stdint.h
+++ b/libstdc++-v3/include/tr1/stdint.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_STDINT_H
 #define _TR1_STDINT_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdint>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/stdio.h b/libstdc++-v3/include/tr1/stdio.h
index f7cc5c7ebe7..3ef65f9044b 100644
--- a/libstdc++-v3/include/tr1/stdio.h
+++ b/libstdc++-v3/include/tr1/stdio.h
@@ -29,6 +29,8 @@
 #ifndef _TR1_STDIO_H
 #define _TR1_STDIO_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdio>
 
 #endif
diff --git a/libstdc++-v3/include/tr1/stdlib.h b/libstdc++-v3/include/tr1/stdlib.h
index 0e9c605cce8..0963136ba3d 100644
--- a/libstdc++-v3/include/tr1/stdlib.h
+++ b/libstdc++-v3/include/tr1/stdlib.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_STDLIB_H
 #define _GLIBCXX_TR1_STDLIB_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cstdlib>
 
 #if _GLIBCXX_HOSTED
diff --git a/libstdc++-v3/include/tr1/tgmath.h b/libstdc++-v3/include/tr1/tgmath.h
index 3871c3c93e5..a3505c9b099 100644
--- a/libstdc++-v3/include/tr1/tgmath.h
+++ b/libstdc++-v3/include/tr1/tgmath.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_TGMATH_H
 #define _GLIBCXX_TR1_TGMATH_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/ctgmath>
 
 #endif // _GLIBCXX_TR1_TGMATH_H
diff --git a/libstdc++-v3/include/tr1/tuple b/libstdc++-v3/include/tr1/tuple
index 94b1c0de532..a24da25df73 100644
--- a/libstdc++-v3/include/tr1/tuple
+++ b/libstdc++-v3/include/tr1/tuple
@@ -34,6 +34,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <utility>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/tr1/type_traits b/libstdc++-v3/include/tr1/type_traits
index 2ee3b06e450..305a0d03de2 100644
--- a/libstdc++-v3/include/tr1/type_traits
+++ b/libstdc++-v3/include/tr1/type_traits
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
diff --git a/libstdc++-v3/include/tr1/unordered_map b/libstdc++-v3/include/tr1/unordered_map
index edec4e2d379..24d38920021 100644
--- a/libstdc++-v3/include/tr1/unordered_map
+++ b/libstdc++-v3/include/tr1/unordered_map
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <utility>
 #include <bits/stl_algobase.h>
 #include <bits/allocator.h>
diff --git a/libstdc++-v3/include/tr1/unordered_set b/libstdc++-v3/include/tr1/unordered_set
index fa11b167847..59f0ab92734 100644
--- a/libstdc++-v3/include/tr1/unordered_set
+++ b/libstdc++-v3/include/tr1/unordered_set
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <utility>
 #include <bits/stl_algobase.h>
 #include <bits/allocator.h>
diff --git a/libstdc++-v3/include/tr1/utility b/libstdc++-v3/include/tr1/utility
index e6e3bbd42fa..cc2699d8a91 100644
--- a/libstdc++-v3/include/tr1/utility
+++ b/libstdc++-v3/include/tr1/utility
@@ -31,6 +31,8 @@
 
 #pragma GCC system_header
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <bits/c++config.h>
 #include <bits/stl_relops.h>
 #include <bits/stl_pair.h>
diff --git a/libstdc++-v3/include/tr1/wchar.h b/libstdc++-v3/include/tr1/wchar.h
index 503ca203961..0812c07ef11 100644
--- a/libstdc++-v3/include/tr1/wchar.h
+++ b/libstdc++-v3/include/tr1/wchar.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_WCHAR_H
 #define _GLIBCXX_TR1_WCHAR_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cwchar>
 
 #endif // _GLIBCXX_TR1_WCHAR_H
diff --git a/libstdc++-v3/include/tr1/wctype.h b/libstdc++-v3/include/tr1/wctype.h
index fa0e4581a7c..84fd7cc5045 100644
--- a/libstdc++-v3/include/tr1/wctype.h
+++ b/libstdc++-v3/include/tr1/wctype.h
@@ -29,6 +29,8 @@
 #ifndef _GLIBCXX_TR1_WCTYPE_H
 #define _GLIBCXX_TR1_WCTYPE_H 1
 
+#include <bits/requires_hosted.h> // TR1
+
 #include <tr1/cwctype>
 
 #endif // _GLIBCXX_TR1_WCTYPE_H
diff --git a/libstdc++-v3/testsuite/lib/prune.exp b/libstdc++-v3/testsuite/lib/prune.exp
index 70ff302288e..d457e975218 100644
--- a/libstdc++-v3/testsuite/lib/prune.exp
+++ b/libstdc++-v3/testsuite/lib/prune.exp
@@ -33,6 +33,10 @@ proc libstdc++-dg-prune { system text } {
 
 #    send_user "Before:$text\n"
 
+    if { [string match "*This header is not available in freestanding mode.*" $text] } {
+      return "::unsupported::hosted C++ headers not supported"
+    }
+
     # Ignore caret diagnostics. Unfortunately dejaGNU trims leading
     # spaces, so one cannot rely on them being present.
     regsub -all "(^|\n)\[^\n\]+\n *\\^\n" $text "\n" text
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 05/10] c-family: Implement new `int main' semantics in freestanding
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (3 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 04/10] libstdc++: Mark headers that must be hosted as such [PR103626] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 06/10] libstdc++: Rework how freestanding install works [PR106953] Arsen Arsenović
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

From now, by default, (specifically) `int main' in freestanding will
implicitly return 0, as it does for hosted modes. The old behaviour is
still accessible via -fno-builtin-main.

gcc/c-family/ChangeLog:

	* c-common.cc (disable_builtin_function): Support special value
	`main' that, in freestanding, allows disabling special casing
	placed around `main'.
	* c-common.h: Add flag_builtin_main.
	(want_builtin_main_p): New function, true iff hosted OR
	builtin_main are set.

gcc/c/ChangeLog:

	* c-decl.cc (grokdeclarator): Consider flag_builtin_main when
	deciding whether to emit warnings.
	(finish_function): Consider flag_builtin_main when deciding
	whether to emit an implicit zero return.
	* c-objc-common.cc (c_missing_noreturn_ok_p): Consider missing
	noreturn okay only when hosted or when builtin_main is enabled.

gcc/cp/ChangeLog:

	* cp-tree.h (DECL_MAIN_P): Consider flag_builtin_main when
	deciding whether this function is to be the special function
	main.

gcc/ChangeLog:

	* doc/invoke.texi: Document -fno-builtin-main.

gcc/testsuite/ChangeLog:

	* gcc.dg/c11-noreturn-4.c: Add -fno-builtin-main to options.
	* gcc.dg/inline-10.c: Likewise.
	* gcc.dg/noreturn-4.c: Likewise.
	* g++.dg/freestanding-main-implicitly-returns.C: New test.
	* g++.dg/no-builtin-main.C: New test.
	* gcc.dg/freestanding-main-implicitly-returns.c: New test.
	* gcc.dg/no-builtin-main.c: New test.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 gcc/c-family/c-common.cc                      |  6 ++++++
 gcc/c-family/c-common.h                       | 10 ++++++++++
 gcc/c/c-decl.cc                               |  4 ++--
 gcc/c/c-objc-common.cc                        |  9 ++++++---
 gcc/cp/cp-tree.h                              | 12 ++++++-----
 gcc/doc/invoke.texi                           | 20 ++++++++++++++-----
 .../freestanding-main-implicitly-returns.C    |  5 +++++
 gcc/testsuite/g++.dg/no-builtin-main.C        |  5 +++++
 gcc/testsuite/gcc.dg/c11-noreturn-4.c         |  2 +-
 .../freestanding-main-implicitly-returns.c    |  5 +++++
 gcc/testsuite/gcc.dg/inline-10.c              |  2 +-
 gcc/testsuite/gcc.dg/no-builtin-main.c        |  5 +++++
 gcc/testsuite/gcc.dg/noreturn-4.c             |  2 +-
 13 files changed, 69 insertions(+), 18 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/freestanding-main-implicitly-returns.C
 create mode 100644 gcc/testsuite/g++.dg/no-builtin-main.C
 create mode 100644 gcc/testsuite/gcc.dg/freestanding-main-implicitly-returns.c
 create mode 100644 gcc/testsuite/gcc.dg/no-builtin-main.c

diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc
index 3c60a89bfe2..117db8a1928 100644
--- a/gcc/c-family/c-common.cc
+++ b/gcc/c-family/c-common.cc
@@ -232,6 +232,10 @@ int flag_isoc2x;
 
 int flag_hosted = 1;
 
+/* Nonzero means that we want to give main its special meaning */
+
+int flag_builtin_main = 1;
+
 
 /* ObjC language option variables.  */
 
@@ -4878,6 +4882,8 @@ disable_builtin_function (const char *name)
 {
   if (startswith (name, "__builtin_"))
     error ("cannot disable built-in function %qs", name);
+  else if (strcmp("main", name) == 0)
+    flag_builtin_main = 0;
   else
     {
       disabled_builtin *new_disabled_builtin = XNEW (disabled_builtin);
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 5f470d94f4a..cbed5f0f9e8 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -687,6 +687,16 @@ extern int flag_isoc2x;
 
 extern int flag_hosted;
 
+/* Nonzero means that we want to give main its special meaning */
+
+extern int flag_builtin_main;
+
+/* Returns false if both flag_hosted and flag_builtin_main are zero, true
+   otherwise. */
+inline bool builtin_main_p() {
+  return flag_hosted || flag_builtin_main;
+}
+
 /* ObjC language option variables.  */
 
 
diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc
index bac8e6cc3f6..5060b3f2a41 100644
--- a/gcc/c/c-decl.cc
+++ b/gcc/c/c-decl.cc
@@ -7695,7 +7695,7 @@ grokdeclarator (const struct c_declarator *declarator,
 
 	/* Record presence of `inline' and `_Noreturn', if it is
 	   reasonable.  */
-	if (flag_hosted && MAIN_NAME_P (declarator->u.id.id))
+	if (builtin_main_p() && MAIN_NAME_P (declarator->u.id.id))
 	  {
 	    if (declspecs->inline_p)
 	      pedwarn (loc, 0, "cannot inline function %<main%>");
@@ -10314,7 +10314,7 @@ finish_function (location_t end_loc)
   if (DECL_RESULT (fndecl) && DECL_RESULT (fndecl) != error_mark_node)
     DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
 
-  if (MAIN_NAME_P (DECL_NAME (fndecl)) && flag_hosted
+  if (MAIN_NAME_P (DECL_NAME (fndecl)) && builtin_main_p()
       && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (fndecl)))
       == integer_type_node && flag_isoc99)
     {
diff --git a/gcc/c/c-objc-common.cc b/gcc/c/c-objc-common.cc
index 70e10a98e33..e229580b182 100644
--- a/gcc/c/c-objc-common.cc
+++ b/gcc/c/c-objc-common.cc
@@ -37,9 +37,12 @@ static bool c_tree_printer (pretty_printer *, text_info *, const char *,
 bool
 c_missing_noreturn_ok_p (tree decl)
 {
-  /* A missing noreturn is not ok for freestanding implementations and
-     ok for the `main' function in hosted implementations.  */
-  return flag_hosted && MAIN_NAME_P (DECL_ASSEMBLER_NAME (decl));
+  /* Missing a return is only okay when flag_builtin_main is enabled, and we
+     are `int main'. */
+  if (!MAIN_NAME_P (DECL_ASSEMBLER_NAME (decl)))
+    return false;
+  return builtin_main_p()
+    && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (decl))) == integer_type_node;
 }
 
 /* Called from check_global_declaration.  */
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 67aea9653e3..50751ab74b6 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -771,11 +771,13 @@ typedef struct ptrmem_cst * ptrmem_cst_t;
 
 /* Returns nonzero iff NODE is a declaration for the global function
    `main'.  */
-#define DECL_MAIN_P(NODE)				\
-   (DECL_EXTERN_C_FUNCTION_P (NODE)			\
-    && DECL_NAME (NODE) != NULL_TREE			\
-    && MAIN_NAME_P (DECL_NAME (NODE))			\
-    && flag_hosted)
+#define DECL_MAIN_P(NODE)					\
+   (DECL_EXTERN_C_FUNCTION_P (NODE)				\
+    && DECL_NAME (NODE) != NULL_TREE				\
+    && MAIN_NAME_P (DECL_NAME (NODE))				\
+    && (flag_hosted || (flag_builtin_main			\
+	&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (NODE)))	\
+	    == integer_type_node)))
 
 /* Lookup walker marking.  */
 #define LOOKUP_SEEN_P(NODE) TREE_VISITED (NODE)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index a5dc6377835..79f144ec819 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2537,8 +2537,10 @@ this switch only affects the @code{asm} and @code{typeof} keywords,
 since @code{inline} is a standard keyword in ISO C99.
 
 @item -fno-builtin
+@itemx -fno-builtin-main
 @itemx -fno-builtin-@var{function}
 @opindex fno-builtin
+@opindex fno-builtin-main
 @opindex fbuiltin
 @cindex built-in functions
 Don't recognize built-in functions that do not begin with
@@ -2577,6 +2579,11 @@ built-in functions selectively when using @option{-fno-builtin} or
 #define strcpy(d, s)    __builtin_strcpy ((d), (s))
 @end smallexample
 
+The special form @option{-fno-builtin-main} permits disabling special
+handling of the @code{main} function, such as the implicit zero
+return.  This option has no effect in hosted mode (as hosted takes
+precedence over it) and is not implied by @option{-fno-builtin}.
+
 @item -fcond-mismatch
 @opindex fcond-mismatch
 Allow conditional expressions with mismatched types in the second and
@@ -2585,13 +2592,16 @@ is not supported for C++.
 
 @item -ffreestanding
 @opindex ffreestanding
+@opindex fno-builtin-main
 @cindex hosted environment
 
 Assert that compilation targets a freestanding environment.  This
-implies @option{-fno-builtin}.  A freestanding environment
-is one in which the standard library may not exist, and program startup may
-not necessarily be at @code{main}.  The most obvious example is an OS kernel.
-This is equivalent to @option{-fno-hosted}.
+implies @option{-fno-builtin}.  A freestanding environment is one in
+which the standard library may not exist, and program startup may not
+necessarily be at @code{main}.  The most obvious example is an OS
+kernel.  Note that this option does not imply
+@option{-fno-builtin-main}.  @option{-ffreestanding} is equivalent to
+@option{-fno-hosted}.
 
 @xref{Standards,,Language Standards Supported by GCC}, for details of
 freestanding and hosted environments.
@@ -5828,7 +5838,7 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
 -Wimplicit-function-declaration @r{(C and Objective-C only)} @gol
 -Winit-self @r{(only for C++)} @gol
 -Wlogical-not-parentheses @gol
--Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}  @gol
+-Wmain @r{(only for C/ObjC and unless} @option{-fno-builtin-main}@r{)}  @gol
 -Wmaybe-uninitialized @gol
 -Wmemset-elt-size @gol
 -Wmemset-transposed-args @gol
diff --git a/gcc/testsuite/g++.dg/freestanding-main-implicitly-returns.C b/gcc/testsuite/g++.dg/freestanding-main-implicitly-returns.C
new file mode 100644
index 00000000000..068ddd4d5ad
--- /dev/null
+++ b/gcc/testsuite/g++.dg/freestanding-main-implicitly-returns.C
@@ -0,0 +1,5 @@
+/* Make sure main is implicitly returned from, even in freestanding. */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type -ffreestanding" } */
+
+int main() {}
diff --git a/gcc/testsuite/g++.dg/no-builtin-main.C b/gcc/testsuite/g++.dg/no-builtin-main.C
new file mode 100644
index 00000000000..7431784d018
--- /dev/null
+++ b/gcc/testsuite/g++.dg/no-builtin-main.C
@@ -0,0 +1,5 @@
+/* Make sure we get warned about missing return with -fno-builtin-main. */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type -ffreestanding -fno-builtin-main" } */
+
+int main() {} /* { dg-warning "-Wreturn-type" } */
diff --git a/gcc/testsuite/gcc.dg/c11-noreturn-4.c b/gcc/testsuite/gcc.dg/c11-noreturn-4.c
index a92a1140f67..16fd8f1b0be 100644
--- a/gcc/testsuite/gcc.dg/c11-noreturn-4.c
+++ b/gcc/testsuite/gcc.dg/c11-noreturn-4.c
@@ -1,6 +1,6 @@
 /* Test C11 _Noreturn.  Test _Noreturn on main, freestanding.  */
 /* { dg-do compile } */
-/* { dg-options "-std=c11 -pedantic-errors -ffreestanding" } */
+/* { dg-options "-std=c11 -pedantic-errors -ffreestanding -fno-builtin-main" } */
 
 _Noreturn void exit (int);
 
diff --git a/gcc/testsuite/gcc.dg/freestanding-main-implicitly-returns.c b/gcc/testsuite/gcc.dg/freestanding-main-implicitly-returns.c
new file mode 100644
index 00000000000..068ddd4d5ad
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/freestanding-main-implicitly-returns.c
@@ -0,0 +1,5 @@
+/* Make sure main is implicitly returned from, even in freestanding. */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type -ffreestanding" } */
+
+int main() {}
diff --git a/gcc/testsuite/gcc.dg/inline-10.c b/gcc/testsuite/gcc.dg/inline-10.c
index f7a7592a6a9..bb59f5d81a7 100644
--- a/gcc/testsuite/gcc.dg/inline-10.c
+++ b/gcc/testsuite/gcc.dg/inline-10.c
@@ -1,6 +1,6 @@
 /* Test inline main, gnu99 mode, freestanding, -pedantic-errors.  */
 /* Origin: Joseph Myers <jsm@polyomino.org.uk> */
 /* { dg-do compile } */
-/* { dg-options "-std=gnu99 -ffreestanding -pedantic-errors" } */
+/* { dg-options "-std=gnu99 -fno-builtin-main -ffreestanding -pedantic-errors" } */
 
 inline int main (void) { return 1; }
diff --git a/gcc/testsuite/gcc.dg/no-builtin-main.c b/gcc/testsuite/gcc.dg/no-builtin-main.c
new file mode 100644
index 00000000000..7431784d018
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/no-builtin-main.c
@@ -0,0 +1,5 @@
+/* Make sure we get warned about missing return with -fno-builtin-main. */
+/* { dg-do compile } */
+/* { dg-options "-Wreturn-type -ffreestanding -fno-builtin-main" } */
+
+int main() {} /* { dg-warning "-Wreturn-type" } */
diff --git a/gcc/testsuite/gcc.dg/noreturn-4.c b/gcc/testsuite/gcc.dg/noreturn-4.c
index 6fe144754d0..c1bdc76b16f 100644
--- a/gcc/testsuite/gcc.dg/noreturn-4.c
+++ b/gcc/testsuite/gcc.dg/noreturn-4.c
@@ -1,6 +1,6 @@
 /* Check for "noreturn" warning in main. */
 /* { dg-do compile } */
-/* { dg-options "-O2 -Wmissing-noreturn -ffreestanding" } */
+/* { dg-options "-O2 -Wmissing-noreturn -ffreestanding -fno-builtin-main" } */
 extern void exit (int) __attribute__ ((__noreturn__));
 
 int
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 06/10] libstdc++: Rework how freestanding install works [PR106953]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (4 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 05/10] c-family: Implement new `int main' semantics in freestanding Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 07/10] libstdc++: Make some tests work on freestanding [PR103626] Arsen Arsenović
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

In light of there being far more freestanding headers now, ad-hoc
maintenance of a subset of the install implementation has become
unsustainable. Instead, we gate off a part of the normal install routine
so that it works without HOSTED enabled, as well as subdivide lists of
headers into freestanding and hosted components, according to the HOSTED
flag.

libstdc++-v3/ChangeLog:

	PR libstdc++/106953
	* include/Makefile.am [!_GLIBCXX_HOSTED]: Remove
	install-freestanding-headers, unifying it with the usual
	install-headers
	* include/Makefile.in: Regenerate.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/include/Makefile.am | 300 +++++++-------
 libstdc++-v3/include/Makefile.in | 656 +++++++++++++++----------------
 2 files changed, 477 insertions(+), 479 deletions(-)

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 56227427b6d..97542524a69 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -25,58 +25,70 @@ include $(top_srcdir)/fragment.am
 # Standard C++ includes.
 std_srcdir = ${glibcxx_srcdir}/include/std
 std_builddir = .
-std_headers = \
+std_freestanding = \
 	${std_srcdir}/algorithm \
-	${std_srcdir}/any \
 	${std_srcdir}/array \
 	${std_srcdir}/atomic \
-	${std_srcdir}/barrier \
 	${std_srcdir}/bit \
 	${std_srcdir}/bitset \
+	${std_srcdir}/concepts \
+	${std_srcdir}/coroutine \
+	${std_srcdir}/expected \
+	${std_srcdir}/functional \
+	${std_srcdir}/iterator \
+	${std_srcdir}/limits \
+	${std_srcdir}/memory \
+	${std_srcdir}/numbers \
+	${std_srcdir}/numeric \
+	${std_srcdir}/optional \
+	${std_srcdir}/ranges \
+	${std_srcdir}/ratio \
+	${std_srcdir}/scoped_allocator \
+	${std_srcdir}/source_location \
+	${std_srcdir}/span \
+	${std_srcdir}/tuple \
+	${std_srcdir}/type_traits \
+	${std_srcdir}/typeindex \
+	${std_srcdir}/utility \
+	${std_srcdir}/variant \
+	${std_srcdir}/version
+
+if !GLIBCXX_HOSTED
+std_headers = ${std_freestanding}
+else GLIBCXX_HOSTED
+std_headers = \
+	${std_freestanding} \
+	${std_srcdir}/any \
+	${std_srcdir}/barrier \
 	${std_srcdir}/charconv \
 	${std_srcdir}/chrono \
 	${std_srcdir}/codecvt \
 	${std_srcdir}/complex \
-	${std_srcdir}/concepts \
 	${std_srcdir}/condition_variable \
-	${std_srcdir}/coroutine \
 	${std_srcdir}/deque \
 	${std_srcdir}/execution \
-	${std_srcdir}/expected \
 	${std_srcdir}/filesystem \
 	${std_srcdir}/forward_list \
 	${std_srcdir}/fstream \
-	${std_srcdir}/functional \
 	${std_srcdir}/future \
 	${std_srcdir}/iomanip \
 	${std_srcdir}/ios \
 	${std_srcdir}/iosfwd \
 	${std_srcdir}/iostream \
 	${std_srcdir}/istream \
-	${std_srcdir}/iterator \
 	${std_srcdir}/latch \
-	${std_srcdir}/limits \
 	${std_srcdir}/list \
 	${std_srcdir}/locale \
 	${std_srcdir}/map \
-	${std_srcdir}/memory \
 	${std_srcdir}/memory_resource \
 	${std_srcdir}/mutex \
-	${std_srcdir}/numbers \
-	${std_srcdir}/numeric \
-	${std_srcdir}/optional \
 	${std_srcdir}/ostream \
 	${std_srcdir}/queue \
 	${std_srcdir}/random \
-	${std_srcdir}/ranges \
-	${std_srcdir}/ratio \
 	${std_srcdir}/regex \
-	${std_srcdir}/scoped_allocator \
 	${std_srcdir}/semaphore \
 	${std_srcdir}/set \
 	${std_srcdir}/shared_mutex \
-	${std_srcdir}/source_location \
-	${std_srcdir}/span \
 	${std_srcdir}/spanstream \
 	${std_srcdir}/sstream \
 	${std_srcdir}/syncstream \
@@ -89,26 +101,68 @@ std_headers = \
 	${std_srcdir}/string_view \
 	${std_srcdir}/system_error \
 	${std_srcdir}/thread \
-	${std_srcdir}/tuple \
-	${std_srcdir}/typeindex \
-	${std_srcdir}/type_traits \
 	${std_srcdir}/unordered_map \
 	${std_srcdir}/unordered_set \
-	${std_srcdir}/utility \
 	${std_srcdir}/valarray \
-	${std_srcdir}/variant \
-	${std_srcdir}/vector \
-	${std_srcdir}/version
+	${std_srcdir}/vector
+endif GLIBCXX_HOSTED
 
 bits_srcdir = ${glibcxx_srcdir}/include/bits
 bits_builddir = ./bits
-bits_headers = \
+bits_freestanding = \
 	${bits_srcdir}/algorithmfwd.h \
 	${bits_srcdir}/align.h \
-	${bits_srcdir}/alloc_traits.h \
-	${bits_srcdir}/allocated_ptr.h \
 	${bits_srcdir}/allocator.h \
+	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
+	${bits_srcdir}/c++0x_warning.h \
+	${bits_srcdir}/boost_concept_check.h \
+	${bits_srcdir}/concept_check.h \
+	${bits_srcdir}/cpp_type_traits.h \
+	${bits_srcdir}/enable_special_members.h \
+	${bits_srcdir}/functexcept.h \
+	${bits_srcdir}/functional_hash.h \
+	${bits_srcdir}/invoke.h \
+	${bits_srcdir}/iterator_concepts.h \
+	${bits_srcdir}/max_size_type.h \
+	${bits_srcdir}/memoryfwd.h \
+	${bits_srcdir}/move.h \
+	${bits_srcdir}/predefined_ops.h \
+	${bits_srcdir}/parse_numbers.h \
+	${bits_srcdir}/ptr_traits.h \
+	${bits_srcdir}/range_access.h \
+	${bits_srcdir}/ranges_algo.h \
+	${bits_srcdir}/ranges_algobase.h \
+	${bits_srcdir}/ranges_base.h \
+	${bits_srcdir}/ranges_cmp.h \
+	${bits_srcdir}/ranges_uninitialized.h \
+	${bits_srcdir}/ranges_util.h \
+	${bits_srcdir}/refwrap.h \
+	${bits_srcdir}/stl_algo.h \
+	${bits_srcdir}/stl_algobase.h \
+	${bits_srcdir}/stl_construct.h \
+	${bits_srcdir}/stl_function.h \
+	${bits_srcdir}/stl_iterator.h \
+	${bits_srcdir}/stl_iterator_base_funcs.h \
+	${bits_srcdir}/stl_iterator_base_types.h \
+	${bits_srcdir}/stl_numeric.h \
+	${bits_srcdir}/stl_heap.h \
+	${bits_srcdir}/stl_pair.h \
+	${bits_srcdir}/stl_raw_storage_iter.h \
+	${bits_srcdir}/stl_relops.h \
+	${bits_srcdir}/stl_uninitialized.h \
+	${bits_srcdir}/uniform_int_dist.h \
+	${bits_srcdir}/unique_ptr.h \
+	${bits_srcdir}/uses_allocator.h \
+	${bits_srcdir}/uses_allocator_args.h \
+	${bits_srcdir}/utility.h
+
+if !GLIBCXX_HOSTED
+bits_headers = ${bits_freestanding}
+else GLIBCXX_HOSTED
+bits_headers = \
+	${bits_freestanding} \
+	${bits_srcdir}/allocated_ptr.h \
 	${bits_srcdir}/atomic_futex.h \
 	${bits_srcdir}/atomic_timed_wait.h \
 	${bits_srcdir}/atomic_wait.h \
@@ -116,17 +170,12 @@ bits_headers = \
 	${bits_srcdir}/basic_ios.tcc \
 	${bits_srcdir}/basic_string.h \
 	${bits_srcdir}/basic_string.tcc \
-	${bits_srcdir}/boost_concept_check.h \
-	${bits_srcdir}/c++0x_warning.h \
 	${bits_srcdir}/char_traits.h \
 	${bits_srcdir}/charconv.h \
 	${bits_srcdir}/chrono.h \
 	${bits_srcdir}/codecvt.h \
-	${bits_srcdir}/concept_check.h \
 	${bits_srcdir}/cow_string.h \
-	${bits_srcdir}/cpp_type_traits.h \
 	${bits_srcdir}/deque.tcc \
-	${bits_srcdir}/enable_special_members.h \
 	${bits_srcdir}/erase_if.h \
 	${bits_srcdir}/forward_list.h \
 	${bits_srcdir}/forward_list.tcc \
@@ -135,17 +184,13 @@ bits_headers = \
 	${bits_srcdir}/fs_ops.h \
 	${bits_srcdir}/fs_path.h \
 	${bits_srcdir}/fstream.tcc \
-	${bits_srcdir}/functexcept.h \
-	${bits_srcdir}/functional_hash.h \
 	${bits_srcdir}/gslice.h \
 	${bits_srcdir}/gslice_array.h \
 	${bits_srcdir}/hashtable.h \
 	${bits_srcdir}/hashtable_policy.h \
 	${bits_srcdir}/indirect_array.h \
-	${bits_srcdir}/invoke.h \
 	${bits_srcdir}/ios_base.h \
 	${bits_srcdir}/istream.tcc \
-	${bits_srcdir}/iterator_concepts.h \
 	${bits_srcdir}/list.tcc \
 	${bits_srcdir}/locale_classes.h \
 	${bits_srcdir}/locale_classes.tcc \
@@ -156,31 +201,17 @@ bits_headers = \
 	${bits_srcdir}/locale_facets_nonio.tcc \
 	${bits_srcdir}/localefwd.h \
 	${bits_srcdir}/mask_array.h \
-	${bits_srcdir}/max_size_type.h \
 	${bits_srcdir}/memory_resource.h \
-	${bits_srcdir}/memoryfwd.h \
 	${bits_srcdir}/mofunc_impl.h \
-	${bits_srcdir}/move.h \
 	${bits_srcdir}/move_only_function.h \
 	${bits_srcdir}/new_allocator.h \
 	${bits_srcdir}/node_handle.h \
 	${bits_srcdir}/ostream.tcc \
 	${bits_srcdir}/ostream_insert.h \
-	${bits_srcdir}/parse_numbers.h \
 	${bits_srcdir}/postypes.h \
-	${bits_srcdir}/predefined_ops.h \
-	${bits_srcdir}/ptr_traits.h \
 	${bits_srcdir}/quoted_string.h \
 	${bits_srcdir}/random.h \
 	${bits_srcdir}/random.tcc \
-	${bits_srcdir}/range_access.h \
-	${bits_srcdir}/ranges_algobase.h \
-	${bits_srcdir}/ranges_algo.h \
-	${bits_srcdir}/ranges_base.h \
-	${bits_srcdir}/ranges_cmp.h \
-	${bits_srcdir}/ranges_uninitialized.h \
-	${bits_srcdir}/ranges_util.h \
-	${bits_srcdir}/refwrap.h \
 	${bits_srcdir}/regex.h \
 	${bits_srcdir}/regex.tcc \
 	${bits_srcdir}/regex_constants.h \
@@ -205,30 +236,18 @@ bits_headers = \
 	${bits_srcdir}/std_function.h \
 	${bits_srcdir}/std_mutex.h \
 	${bits_srcdir}/std_thread.h \
-	${bits_srcdir}/stl_algo.h \
-	${bits_srcdir}/stl_algobase.h \
 	${bits_srcdir}/stl_bvector.h \
-	${bits_srcdir}/stl_construct.h \
 	${bits_srcdir}/stl_deque.h \
-	${bits_srcdir}/stl_function.h \
-	${bits_srcdir}/stl_heap.h \
-	${bits_srcdir}/stl_iterator.h \
-	${bits_srcdir}/stl_iterator_base_funcs.h \
-	${bits_srcdir}/stl_iterator_base_types.h \
 	${bits_srcdir}/stl_list.h \
 	${bits_srcdir}/stl_map.h \
 	${bits_srcdir}/stl_multimap.h \
 	${bits_srcdir}/stl_multiset.h \
-	${bits_srcdir}/stl_numeric.h \
-	${bits_srcdir}/stl_pair.h \
 	${bits_srcdir}/stl_queue.h \
-	${bits_srcdir}/stl_raw_storage_iter.h \
 	${bits_srcdir}/stl_relops.h \
 	${bits_srcdir}/stl_set.h \
 	${bits_srcdir}/stl_stack.h \
 	${bits_srcdir}/stl_tempbuf.h \
 	${bits_srcdir}/stl_tree.h \
-	${bits_srcdir}/stl_uninitialized.h \
 	${bits_srcdir}/stl_vector.h \
 	${bits_srcdir}/stream_iterator.h \
 	${bits_srcdir}/streambuf_iterator.h \
@@ -236,19 +255,15 @@ bits_headers = \
 	${bits_srcdir}/stringfwd.h \
 	${bits_srcdir}/string_view.tcc \
 	${bits_srcdir}/this_thread_sleep.h \
-	${bits_srcdir}/uniform_int_dist.h \
 	${bits_srcdir}/unique_lock.h \
-	${bits_srcdir}/unique_ptr.h \
 	${bits_srcdir}/unordered_map.h \
 	${bits_srcdir}/unordered_set.h \
-	${bits_srcdir}/uses_allocator.h \
-	${bits_srcdir}/uses_allocator_args.h \
-	${bits_srcdir}/utility.h \
 	${bits_srcdir}/valarray_array.h \
 	${bits_srcdir}/valarray_array.tcc \
 	${bits_srcdir}/valarray_before.h \
 	${bits_srcdir}/valarray_after.h \
 	${bits_srcdir}/vector.tcc
+endif GLIBCXX_HOSTED
 
 bits_host_headers = \
 	${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
@@ -293,15 +308,22 @@ pstl_headers = \
 
 backward_srcdir = ${glibcxx_srcdir}/include/backward
 backward_builddir = ./backward
-backward_headers = \
+backward_freestanding = \
 	${backward_srcdir}/auto_ptr.h \
+	${backward_srcdir}/binders.h
+
+if !GLIBCXX_HOSTED
+backward_headers = ${backward_freestanding}
+else GLIBCXX_HOSTED
+backward_headers = \
+	${backward_freestanding} \
 	${backward_srcdir}/backward_warning.h \
-	${backward_srcdir}/binders.h \
 	${backward_srcdir}/hash_map \
 	${backward_srcdir}/hash_set \
 	${backward_srcdir}/hash_fun.h \
 	${backward_srcdir}/hashtable.h \
 	${backward_srcdir}/strstream
+endif GLIBCXX_HOSTED
 
 pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
 pb_builddir = ./ext/pb_ds
@@ -597,49 +619,56 @@ pb_headers7 = \
 
 ext_srcdir = ${glibcxx_srcdir}/include/ext
 ext_builddir = ./ext
-ext_headers = \
-	${ext_srcdir}/algorithm \
+ext_freestanding = \
 	${ext_srcdir}/aligned_buffer.h \
 	${ext_srcdir}/alloc_traits.h \
 	${ext_srcdir}/atomicity.h \
-	${ext_srcdir}/bitmap_allocator.h \
 	${ext_srcdir}/cast.h \
+	${ext_srcdir}/concurrence.h \
+	${ext_srcdir}/numeric_traits.h \
+	${ext_srcdir}/iterator \
+	${ext_srcdir}/pointer.h \
+	${ext_srcdir}/type_traits.h \
+	${ext_srcdir}/typelist.h
+
+if !GLIBCXX_HOSTED
+ext_headers = ${ext_freestanding}
+else GLIBCXX_HOSTED
+ext_headers = \
+	${ext_freestanding} \
+	${ext_srcdir}/algorithm \
+	${ext_srcdir}/bitmap_allocator.h \
 	${ext_srcdir}/cmath \
 	${ext_srcdir}/codecvt_specializations.h \
-	${ext_srcdir}/concurrence.h \
 	${ext_srcdir}/debug_allocator.h \
 	${ext_srcdir}/enc_filebuf.h \
 	${ext_srcdir}/extptr_allocator.h \
-	${ext_srcdir}/stdio_filebuf.h \
-	${ext_srcdir}/stdio_sync_filebuf.h \
 	${ext_srcdir}/functional \
-	${ext_srcdir}/iterator \
 	${ext_srcdir}/malloc_allocator.h \
 	${ext_srcdir}/memory \
 	${ext_srcdir}/mt_allocator.h \
 	${ext_srcdir}/new_allocator.h \
 	${ext_srcdir}/numeric \
-	${ext_srcdir}/numeric_traits.h \
 	${ext_srcdir}/pod_char_traits.h \
-	${ext_srcdir}/pointer.h \
 	${ext_srcdir}/pool_allocator.h \
-	${ext_srcdir}/rb_tree \
 	${ext_srcdir}/random \
 	${ext_srcdir}/random.tcc \
+	${ext_srcdir}/rb_tree \
+	${ext_srcdir}/rc_string_base.h \
 	${ext_srcdir}/rope \
 	${ext_srcdir}/ropeimpl.h \
 	${ext_srcdir}/slist \
+	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/stdio_filebuf.h \
+	${ext_srcdir}/stdio_sync_filebuf.h \
 	${ext_srcdir}/string_conversions.h \
 	${ext_srcdir}/throw_allocator.h \
-	${ext_srcdir}/typelist.h \
-	${ext_srcdir}/type_traits.h \
-	${ext_srcdir}/rc_string_base.h \
-	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/vstring_fwd.h \
 	${ext_srcdir}/vstring.h \
 	${ext_srcdir}/vstring.tcc \
-	${ext_srcdir}/vstring_fwd.h \
 	${ext_srcdir}/vstring_util.h \
 	${ext_compat_headers}
+endif GLIBCXX_HOSTED
 
 ext_compat_headers = \
 	${backward_srcdir}/hash_set \
@@ -812,16 +841,25 @@ endif
 # This is the common subset of C++ files that all three "C" header models use.
 c_base_srcdir = $(C_INCLUDE_DIR)
 c_base_builddir = .
+c_base_freestanding = \
+	${c_base_srcdir}/cfloat \
+	${c_base_srcdir}/climits \
+	${c_base_srcdir}/cstddef \
+	${c_base_srcdir}/cstdint \
+	${c_base_srcdir}/cstdlib
+
+if !GLIBCXX_HOSTED
+c_base_headers = ${c_base_freestanding}
+else GLIBCXX_HOSTED
 c_base_headers = \
+	${c_base_freestanding} \
 	${c_base_srcdir}/cassert \
 	${c_base_srcdir}/ccomplex \
 	${c_base_srcdir}/cctype \
 	${c_base_srcdir}/cerrno \
 	${c_base_srcdir}/cfenv \
-	${c_base_srcdir}/cfloat \
 	${c_base_srcdir}/cinttypes \
 	${c_base_srcdir}/ciso646 \
-	${c_base_srcdir}/climits \
 	${c_base_srcdir}/clocale \
 	${c_base_srcdir}/cmath \
 	${c_base_srcdir}/csetjmp \
@@ -829,16 +867,14 @@ c_base_headers = \
 	${c_base_srcdir}/cstdalign \
 	${c_base_srcdir}/cstdarg \
 	${c_base_srcdir}/cstdbool \
-	${c_base_srcdir}/cstddef \
-	${c_base_srcdir}/cstdint \
 	${c_base_srcdir}/cstdio \
-	${c_base_srcdir}/cstdlib \
 	${c_base_srcdir}/cstring \
 	${c_base_srcdir}/ctgmath \
 	${c_base_srcdir}/ctime \
 	${c_base_srcdir}/cuchar \
 	${c_base_srcdir}/cwchar \
 	${c_base_srcdir}/cwctype
+endif GLIBCXX_HOSTED
 
 # "C" compatibility headers.
 c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility
@@ -890,10 +926,16 @@ endif
 # Debug mode headers
 debug_srcdir = ${glibcxx_srcdir}/include/debug
 debug_builddir = ./debug
-debug_headers = \
+debug_freestanding = \
 	${debug_srcdir}/assertions.h \
+	${debug_srcdir}/debug.h
+
+if !GLIBCXX_HOSTED
+debug_headers = ${debug_freestanding}
+else GLIBCXX_HOSTED
+debug_headers = \
+	${debug_freestanding} \
 	${debug_srcdir}/bitset \
-	${debug_srcdir}/debug.h \
 	${debug_srcdir}/deque \
 	${debug_srcdir}/formatter.h \
 	${debug_srcdir}/forward_list \
@@ -923,6 +965,7 @@ debug_headers = \
 	${debug_srcdir}/unordered_map \
 	${debug_srcdir}/unordered_set \
 	${debug_srcdir}/vector
+endif GLIBCXX_HOSTED
 
 # Parallel mode headers
 parallel_srcdir = ${glibcxx_srcdir}/include/parallel
@@ -1415,48 +1458,8 @@ ${pch3_output}: ${pch3_source} ${pch2_output}
 	-mkdir -p ${pch3_output_builddir}
 	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch3_source} -o $@
 
-# For robustness sake (in light of junk files or in-source
-# configuration), copy from the build or source tree to the install
-# tree using only the human-maintained file lists and directory
-# components.  Yes, with minor differences, this is sheer duplication
-# of the staging rules above using $(INSTALL_DATA) instead of LN_S and
-# `$(mkinstalldirs)' instead of `mkdir -p'.  In particular,
-# host_headers_extra are taken out of the build tree staging area;
-# the rest are taken from the original source tree.
-
-if GLIBCXX_HOSTED
-install-data-local: install-headers
-else
-install-data-local: install-freestanding-headers
-endif
-
-# This is a subset of the full install-headers rule.  We only need <ciso646>,
-# <cstddef>, <cfloat>, <limits>, <climits>, <version>, <cstdint>, <cstdlib>,
-# <new>, <typeinfo>, <exception>, <initializer_list>, <cstdalign>, <cstdarg>,
-# <concepts>, <coroutine>, <cstdbool>, <type_traits>, <bit>, <atomic>,
-# <source_location> and any files which they include (and which we provide).
-# <new>, <typeinfo>, <exception>, <initializer_list> and <compare>
-# are installed by libsupc++, so only the others and the sub-includes
-# are copied here.
-install-freestanding-headers:
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/bits
-	for file in c++0x_warning.h atomic_base.h concept_check.h move.h; do \
-	  $(INSTALL_DATA) ${glibcxx_srcdir}/include/bits/$${file} $(DESTDIR)${gxx_include_dir}/bits; done
-	$(mkinstalldirs) $(DESTDIR)${host_installdir}
-	for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \
-	  ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
-	  ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
-	for file in limits type_traits atomic bit concepts coroutine \
-	  source_location version; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ciso646 cstddef cfloat climits cstdint cstdlib \
-	  cstdalign cstdarg cstdbool; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
-
 # The real deal.
+install-data-local: install-headers
 install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
@@ -1465,10 +1468,24 @@ install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${backward_builddir}
 	for file in ${backward_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${backward_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
+	for file in ${std_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
+	for file in ${debug_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
+	$(mkinstalldirs) $(DESTDIR)${host_installdir}
+	for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
+	 ${thread_host_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
 	for file in ${ext_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
+if GLIBCXX_HOSTED
 	for dir in ${pb_subdirs}; do \
 	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done
 	for file in ${pb_headers1}; do \
@@ -1514,34 +1531,23 @@ install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}
 	for file in ${experimental_bits_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ${c_base_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	c_base_headers_extra_install='$(c_base_headers_extra)';\
 	for file in $$c_base_headers_extra_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
 	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
 	for file in $$c_compatibility_headers_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
-	for file in ${std_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
-	for file in ${debug_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir}
 	for file in ${parallel_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${host_installdir}
-	for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
-	 ${thread_host_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
 	$(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
 	for file in ${ext_host_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pstl_builddir}
 	for file in ${pstl_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${pstl_builddir}; done
+endif GLIBCXX_HOSTED
+
 # By adding these files here, automake will remove them for 'make clean'
 CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
 
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index f6ed98fefcd..26d2f6a6d85 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -380,233 +380,249 @@ WARN_CXXFLAGS = \
 # -I/-D flags to pass when compiling.
 AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
 
+# Regarding *_freestanding:
+# For including files in freestanding, create a new _freestanding variable, and
+# split *_headers across an ``if GLIBCXX_HOSTED'', then update install-headers
+# to account for the new directory/set being added.
+# If such a variable exists, simply add to either *_headers or *_freestanding,
+# as appropriate.
+
 # Standard C++ includes.
 std_srcdir = ${glibcxx_srcdir}/include/std
 std_builddir = .
-std_headers = \
+std_freestanding = \
 	${std_srcdir}/algorithm \
-	${std_srcdir}/any \
 	${std_srcdir}/array \
 	${std_srcdir}/atomic \
-	${std_srcdir}/barrier \
 	${std_srcdir}/bit \
-	${std_srcdir}/bitset \
-	${std_srcdir}/charconv \
-	${std_srcdir}/chrono \
-	${std_srcdir}/codecvt \
-	${std_srcdir}/complex \
 	${std_srcdir}/concepts \
-	${std_srcdir}/condition_variable \
 	${std_srcdir}/coroutine \
-	${std_srcdir}/deque \
-	${std_srcdir}/execution \
-	${std_srcdir}/expected \
-	${std_srcdir}/filesystem \
-	${std_srcdir}/forward_list \
-	${std_srcdir}/fstream \
 	${std_srcdir}/functional \
-	${std_srcdir}/future \
-	${std_srcdir}/iomanip \
-	${std_srcdir}/ios \
-	${std_srcdir}/iosfwd \
-	${std_srcdir}/iostream \
-	${std_srcdir}/istream \
 	${std_srcdir}/iterator \
-	${std_srcdir}/latch \
 	${std_srcdir}/limits \
-	${std_srcdir}/list \
-	${std_srcdir}/locale \
-	${std_srcdir}/map \
 	${std_srcdir}/memory \
-	${std_srcdir}/memory_resource \
-	${std_srcdir}/mutex \
 	${std_srcdir}/numbers \
-	${std_srcdir}/numeric \
 	${std_srcdir}/optional \
-	${std_srcdir}/ostream \
-	${std_srcdir}/queue \
-	${std_srcdir}/random \
 	${std_srcdir}/ranges \
 	${std_srcdir}/ratio \
-	${std_srcdir}/regex \
-	${std_srcdir}/scoped_allocator \
-	${std_srcdir}/semaphore \
-	${std_srcdir}/set \
-	${std_srcdir}/shared_mutex \
 	${std_srcdir}/source_location \
 	${std_srcdir}/span \
-	${std_srcdir}/spanstream \
-	${std_srcdir}/sstream \
-	${std_srcdir}/syncstream \
-	${std_srcdir}/stack \
-	${std_srcdir}/stacktrace \
-	${std_srcdir}/stdexcept \
-	${std_srcdir}/stop_token \
-	${std_srcdir}/streambuf \
-	${std_srcdir}/string \
-	${std_srcdir}/string_view \
-	${std_srcdir}/system_error \
-	${std_srcdir}/thread \
 	${std_srcdir}/tuple \
-	${std_srcdir}/typeindex \
 	${std_srcdir}/type_traits \
-	${std_srcdir}/unordered_map \
-	${std_srcdir}/unordered_set \
 	${std_srcdir}/utility \
-	${std_srcdir}/valarray \
 	${std_srcdir}/variant \
-	${std_srcdir}/vector \
 	${std_srcdir}/version
 
+@GLIBCXX_HOSTED_FALSE@std_headers = ${std_freestanding}
+@GLIBCXX_HOSTED_TRUE@std_headers = \
+@GLIBCXX_HOSTED_TRUE@	${std_freestanding} \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/any \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/barrier \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/bitset \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/charconv \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/chrono \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/codecvt \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/complex \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/condition_variable \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/deque \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/execution \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/expected \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/filesystem \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/forward_list \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/fstream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/future \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/iomanip \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/ios \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/iosfwd \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/iostream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/istream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/latch \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/list \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/locale \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/map \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/memory_resource \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/mutex \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/numeric \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/ostream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/queue \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/random \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/regex \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/scoped_allocator \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/semaphore \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/set \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/shared_mutex \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/spanstream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/sstream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/syncstream \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/stack \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/stacktrace \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/stdexcept \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/stop_token \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/streambuf \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/string \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/string_view \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/system_error \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/thread \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/typeindex \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/unordered_map \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/unordered_set \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/valarray \
+@GLIBCXX_HOSTED_TRUE@	${std_srcdir}/vector
+
 bits_srcdir = ${glibcxx_srcdir}/include/bits
 bits_builddir = ./bits
-bits_headers = \
+bits_freestanding = \
 	${bits_srcdir}/algorithmfwd.h \
 	${bits_srcdir}/align.h \
-	${bits_srcdir}/alloc_traits.h \
-	${bits_srcdir}/allocated_ptr.h \
 	${bits_srcdir}/allocator.h \
+	${bits_srcdir}/alloc_traits.h \
 	${bits_srcdir}/atomic_base.h \
-	${bits_srcdir}/atomic_futex.h \
-	${bits_srcdir}/atomic_timed_wait.h \
-	${bits_srcdir}/atomic_wait.h \
-	${bits_srcdir}/basic_ios.h \
-	${bits_srcdir}/basic_ios.tcc \
-	${bits_srcdir}/basic_string.h \
-	${bits_srcdir}/basic_string.tcc \
-	${bits_srcdir}/boost_concept_check.h \
 	${bits_srcdir}/c++0x_warning.h \
-	${bits_srcdir}/char_traits.h \
-	${bits_srcdir}/charconv.h \
-	${bits_srcdir}/chrono.h \
-	${bits_srcdir}/codecvt.h \
 	${bits_srcdir}/concept_check.h \
-	${bits_srcdir}/cow_string.h \
 	${bits_srcdir}/cpp_type_traits.h \
-	${bits_srcdir}/deque.tcc \
 	${bits_srcdir}/enable_special_members.h \
-	${bits_srcdir}/erase_if.h \
-	${bits_srcdir}/forward_list.h \
-	${bits_srcdir}/forward_list.tcc \
-	${bits_srcdir}/fs_dir.h \
-	${bits_srcdir}/fs_fwd.h \
-	${bits_srcdir}/fs_ops.h \
-	${bits_srcdir}/fs_path.h \
-	${bits_srcdir}/fstream.tcc \
 	${bits_srcdir}/functexcept.h \
 	${bits_srcdir}/functional_hash.h \
-	${bits_srcdir}/gslice.h \
-	${bits_srcdir}/gslice_array.h \
-	${bits_srcdir}/hashtable.h \
-	${bits_srcdir}/hashtable_policy.h \
-	${bits_srcdir}/indirect_array.h \
 	${bits_srcdir}/invoke.h \
-	${bits_srcdir}/ios_base.h \
-	${bits_srcdir}/istream.tcc \
 	${bits_srcdir}/iterator_concepts.h \
-	${bits_srcdir}/list.tcc \
-	${bits_srcdir}/locale_classes.h \
-	${bits_srcdir}/locale_classes.tcc \
-	${bits_srcdir}/locale_conv.h \
-	${bits_srcdir}/locale_facets.h \
-	${bits_srcdir}/locale_facets.tcc \
-	${bits_srcdir}/locale_facets_nonio.h \
-	${bits_srcdir}/locale_facets_nonio.tcc \
-	${bits_srcdir}/localefwd.h \
-	${bits_srcdir}/mask_array.h \
 	${bits_srcdir}/max_size_type.h \
-	${bits_srcdir}/memory_resource.h \
 	${bits_srcdir}/memoryfwd.h \
-	${bits_srcdir}/mofunc_impl.h \
 	${bits_srcdir}/move.h \
-	${bits_srcdir}/move_only_function.h \
-	${bits_srcdir}/new_allocator.h \
-	${bits_srcdir}/node_handle.h \
-	${bits_srcdir}/ostream.tcc \
-	${bits_srcdir}/ostream_insert.h \
-	${bits_srcdir}/parse_numbers.h \
-	${bits_srcdir}/postypes.h \
 	${bits_srcdir}/predefined_ops.h \
+	${bits_srcdir}/parse_numbers.h \
 	${bits_srcdir}/ptr_traits.h \
-	${bits_srcdir}/quoted_string.h \
-	${bits_srcdir}/random.h \
-	${bits_srcdir}/random.tcc \
 	${bits_srcdir}/range_access.h \
-	${bits_srcdir}/ranges_algobase.h \
 	${bits_srcdir}/ranges_algo.h \
+	${bits_srcdir}/ranges_algobase.h \
 	${bits_srcdir}/ranges_base.h \
 	${bits_srcdir}/ranges_cmp.h \
 	${bits_srcdir}/ranges_uninitialized.h \
 	${bits_srcdir}/ranges_util.h \
 	${bits_srcdir}/refwrap.h \
-	${bits_srcdir}/regex.h \
-	${bits_srcdir}/regex.tcc \
-	${bits_srcdir}/regex_constants.h \
-	${bits_srcdir}/regex_error.h \
-	${bits_srcdir}/regex_scanner.h \
-	${bits_srcdir}/regex_scanner.tcc \
-	${bits_srcdir}/regex_automaton.h \
-	${bits_srcdir}/regex_automaton.tcc \
-	${bits_srcdir}/regex_compiler.h \
-	${bits_srcdir}/regex_compiler.tcc \
-	${bits_srcdir}/regex_executor.h \
-	${bits_srcdir}/regex_executor.tcc \
-	${bits_srcdir}/requires_hosted.h \
-	${bits_srcdir}/semaphore_base.h \
-	${bits_srcdir}/shared_ptr.h \
-	${bits_srcdir}/shared_ptr_atomic.h \
-	${bits_srcdir}/shared_ptr_base.h \
-	${bits_srcdir}/slice_array.h \
-	${bits_srcdir}/specfun.h \
-	${bits_srcdir}/sstream.tcc \
-	${bits_srcdir}/std_abs.h \
-	${bits_srcdir}/std_function.h \
-	${bits_srcdir}/std_mutex.h \
-	${bits_srcdir}/std_thread.h \
 	${bits_srcdir}/stl_algo.h \
 	${bits_srcdir}/stl_algobase.h \
-	${bits_srcdir}/stl_bvector.h \
 	${bits_srcdir}/stl_construct.h \
-	${bits_srcdir}/stl_deque.h \
 	${bits_srcdir}/stl_function.h \
-	${bits_srcdir}/stl_heap.h \
 	${bits_srcdir}/stl_iterator.h \
 	${bits_srcdir}/stl_iterator_base_funcs.h \
 	${bits_srcdir}/stl_iterator_base_types.h \
-	${bits_srcdir}/stl_list.h \
-	${bits_srcdir}/stl_map.h \
-	${bits_srcdir}/stl_multimap.h \
-	${bits_srcdir}/stl_multiset.h \
-	${bits_srcdir}/stl_numeric.h \
+	${bits_srcdir}/stl_heap.h \
 	${bits_srcdir}/stl_pair.h \
-	${bits_srcdir}/stl_queue.h \
 	${bits_srcdir}/stl_raw_storage_iter.h \
 	${bits_srcdir}/stl_relops.h \
-	${bits_srcdir}/stl_set.h \
-	${bits_srcdir}/stl_stack.h \
-	${bits_srcdir}/stl_tempbuf.h \
-	${bits_srcdir}/stl_tree.h \
 	${bits_srcdir}/stl_uninitialized.h \
-	${bits_srcdir}/stl_vector.h \
-	${bits_srcdir}/stream_iterator.h \
-	${bits_srcdir}/streambuf_iterator.h \
-	${bits_srcdir}/streambuf.tcc \
-	${bits_srcdir}/stringfwd.h \
-	${bits_srcdir}/string_view.tcc \
-	${bits_srcdir}/this_thread_sleep.h \
 	${bits_srcdir}/uniform_int_dist.h \
-	${bits_srcdir}/unique_lock.h \
 	${bits_srcdir}/unique_ptr.h \
-	${bits_srcdir}/unordered_map.h \
-	${bits_srcdir}/unordered_set.h \
 	${bits_srcdir}/uses_allocator.h \
 	${bits_srcdir}/uses_allocator_args.h \
-	${bits_srcdir}/utility.h \
-	${bits_srcdir}/valarray_array.h \
-	${bits_srcdir}/valarray_array.tcc \
-	${bits_srcdir}/valarray_before.h \
-	${bits_srcdir}/valarray_after.h \
-	${bits_srcdir}/vector.tcc
+	${bits_srcdir}/utility.h
+
+@GLIBCXX_HOSTED_FALSE@bits_headers = ${bits_freestanding}
+@GLIBCXX_HOSTED_TRUE@bits_headers = \
+@GLIBCXX_HOSTED_TRUE@	${bits_freestanding} \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/allocated_ptr.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/atomic_futex.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/atomic_timed_wait.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/atomic_wait.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_ios.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_ios.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/basic_string.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/boost_concept_check.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/char_traits.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/charconv.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/chrono.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/codecvt.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/cow_string.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/deque.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/erase_if.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/forward_list.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/forward_list.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_dir.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_fwd.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_ops.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fs_path.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/fstream.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/gslice.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/gslice_array.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/hashtable.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/hashtable_policy.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/indirect_array.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ios_base.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/istream.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/list.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_classes.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_classes.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_conv.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_facets.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_facets.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_facets_nonio.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/locale_facets_nonio.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/localefwd.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/mask_array.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/memory_resource.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/mofunc_impl.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/move_only_function.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/new_allocator.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/node_handle.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/ostream_insert.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/postypes.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/quoted_string.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/random.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/random.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_constants.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_error.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_scanner.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_scanner.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_automaton.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_automaton.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_compiler.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_compiler.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_executor.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/regex_executor.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/requires_hosted.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/semaphore_base.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/shared_ptr.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/shared_ptr_atomic.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/shared_ptr_base.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/slice_array.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/specfun.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/sstream.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/std_abs.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/std_function.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/std_mutex.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/std_thread.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_bvector.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_deque.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_list.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_map.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_multimap.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_multiset.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_numeric.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_queue.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_relops.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_set.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_stack.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_tempbuf.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_tree.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stl_vector.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stream_iterator.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/streambuf_iterator.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/streambuf.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/stringfwd.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/string_view.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/this_thread_sleep.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/unique_lock.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/unordered_map.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/unordered_set.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/valarray_array.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/valarray_array.tcc \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/valarray_before.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/valarray_after.h \
+@GLIBCXX_HOSTED_TRUE@	${bits_srcdir}/vector.tcc
 
 bits_host_headers = \
 	${glibcxx_srcdir}/${CPU_OPT_BITS_RANDOM}
@@ -652,15 +668,19 @@ pstl_headers = \
 
 backward_srcdir = ${glibcxx_srcdir}/include/backward
 backward_builddir = ./backward
-backward_headers = \
+backward_freestanding = \
 	${backward_srcdir}/auto_ptr.h \
-	${backward_srcdir}/backward_warning.h \
-	${backward_srcdir}/binders.h \
-	${backward_srcdir}/hash_map \
-	${backward_srcdir}/hash_set \
-	${backward_srcdir}/hash_fun.h \
-	${backward_srcdir}/hashtable.h \
-	${backward_srcdir}/strstream
+	${backward_srcdir}/binders.h
+
+@GLIBCXX_HOSTED_FALSE@backward_headers = ${backward_freestanding}
+@GLIBCXX_HOSTED_TRUE@backward_headers = \
+@GLIBCXX_HOSTED_TRUE@	${backward_freestanding} \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/backward_warning.h \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/hash_map \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/hash_set \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/hash_fun.h \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/hashtable.h \
+@GLIBCXX_HOSTED_TRUE@	${backward_srcdir}/strstream
 
 pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
 pb_builddir = ./ext/pb_ds
@@ -967,8 +987,6 @@ ext_headers = \
 	${ext_srcdir}/debug_allocator.h \
 	${ext_srcdir}/enc_filebuf.h \
 	${ext_srcdir}/extptr_allocator.h \
-	${ext_srcdir}/stdio_filebuf.h \
-	${ext_srcdir}/stdio_sync_filebuf.h \
 	${ext_srcdir}/functional \
 	${ext_srcdir}/iterator \
 	${ext_srcdir}/malloc_allocator.h \
@@ -980,21 +998,23 @@ ext_headers = \
 	${ext_srcdir}/pod_char_traits.h \
 	${ext_srcdir}/pointer.h \
 	${ext_srcdir}/pool_allocator.h \
-	${ext_srcdir}/rb_tree \
 	${ext_srcdir}/random \
 	${ext_srcdir}/random.tcc \
+	${ext_srcdir}/rb_tree \
+	${ext_srcdir}/rc_string_base.h \
 	${ext_srcdir}/rope \
 	${ext_srcdir}/ropeimpl.h \
 	${ext_srcdir}/slist \
+	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/stdio_filebuf.h \
+	${ext_srcdir}/stdio_sync_filebuf.h \
 	${ext_srcdir}/string_conversions.h \
 	${ext_srcdir}/throw_allocator.h \
 	${ext_srcdir}/typelist.h \
 	${ext_srcdir}/type_traits.h \
-	${ext_srcdir}/rc_string_base.h \
-	${ext_srcdir}/sso_string_base.h \
+	${ext_srcdir}/vstring_fwd.h \
 	${ext_srcdir}/vstring.h \
 	${ext_srcdir}/vstring.tcc \
-	${ext_srcdir}/vstring_fwd.h \
 	${ext_srcdir}/vstring_util.h \
 	${ext_compat_headers}
 
@@ -1169,33 +1189,37 @@ experimental_bits_headers = \
 # This is the common subset of C++ files that all three "C" header models use.
 c_base_srcdir = $(C_INCLUDE_DIR)
 c_base_builddir = .
-c_base_headers = \
-	${c_base_srcdir}/cassert \
-	${c_base_srcdir}/ccomplex \
-	${c_base_srcdir}/cctype \
-	${c_base_srcdir}/cerrno \
-	${c_base_srcdir}/cfenv \
+c_base_freestanding = \
 	${c_base_srcdir}/cfloat \
-	${c_base_srcdir}/cinttypes \
-	${c_base_srcdir}/ciso646 \
 	${c_base_srcdir}/climits \
-	${c_base_srcdir}/clocale \
-	${c_base_srcdir}/cmath \
-	${c_base_srcdir}/csetjmp \
-	${c_base_srcdir}/csignal \
-	${c_base_srcdir}/cstdalign \
-	${c_base_srcdir}/cstdarg \
-	${c_base_srcdir}/cstdbool \
 	${c_base_srcdir}/cstddef \
 	${c_base_srcdir}/cstdint \
-	${c_base_srcdir}/cstdio \
-	${c_base_srcdir}/cstdlib \
-	${c_base_srcdir}/cstring \
-	${c_base_srcdir}/ctgmath \
-	${c_base_srcdir}/ctime \
-	${c_base_srcdir}/cuchar \
-	${c_base_srcdir}/cwchar \
-	${c_base_srcdir}/cwctype
+	${c_base_srcdir}/cstdlib
+
+@GLIBCXX_HOSTED_FALSE@c_base_headers = ${c_base_freestanding}
+@GLIBCXX_HOSTED_TRUE@c_base_headers = \
+@GLIBCXX_HOSTED_TRUE@	${c_base_freestanding} \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cassert \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/ccomplex \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cctype \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cerrno \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cfenv \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cinttypes \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/ciso646 \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/clocale \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cmath \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/csetjmp \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/csignal \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdalign \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdarg \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdbool \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstdio \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cstring \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/ctgmath \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/ctime \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cuchar \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cwchar \
+@GLIBCXX_HOSTED_TRUE@	${c_base_srcdir}/cwctype
 
 
 # "C" compatibility headers.
@@ -1241,39 +1265,43 @@ c_compatibility_builddir = .
 # Debug mode headers
 debug_srcdir = ${glibcxx_srcdir}/include/debug
 debug_builddir = ./debug
-debug_headers = \
+debug_freestanding = \
 	${debug_srcdir}/assertions.h \
-	${debug_srcdir}/bitset \
-	${debug_srcdir}/debug.h \
-	${debug_srcdir}/deque \
-	${debug_srcdir}/formatter.h \
-	${debug_srcdir}/forward_list \
-	${debug_srcdir}/functions.h \
-	${debug_srcdir}/helper_functions.h \
-	${debug_srcdir}/list \
-	${debug_srcdir}/map \
-	${debug_srcdir}/macros.h \
-	${debug_srcdir}/map.h \
-	${debug_srcdir}/multimap.h \
-	${debug_srcdir}/multiset.h \
-	${debug_srcdir}/safe_base.h \
-	${debug_srcdir}/safe_container.h \
-	${debug_srcdir}/safe_iterator.h \
-	${debug_srcdir}/safe_iterator.tcc \
-	${debug_srcdir}/safe_local_iterator.h \
-	${debug_srcdir}/safe_local_iterator.tcc \
-	${debug_srcdir}/safe_sequence.h \
-	${debug_srcdir}/safe_sequence.tcc \
-	${debug_srcdir}/safe_unordered_base.h \
-	${debug_srcdir}/safe_unordered_container.h \
-	${debug_srcdir}/safe_unordered_container.tcc \
-	${debug_srcdir}/set \
-	${debug_srcdir}/set.h \
-	${debug_srcdir}/stl_iterator.h \
-	${debug_srcdir}/string \
-	${debug_srcdir}/unordered_map \
-	${debug_srcdir}/unordered_set \
-	${debug_srcdir}/vector
+	${debug_srcdir}/debug.h
+
+@GLIBCXX_HOSTED_FALSE@debug_headers = ${debug_freestanding}
+@GLIBCXX_HOSTED_TRUE@debug_headers = \
+@GLIBCXX_HOSTED_TRUE@	${debug_freestanding} \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/bitset \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/deque \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/formatter.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/forward_list \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/functions.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/helper_functions.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/list \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/map \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/macros.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/map.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/multimap.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/multiset.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_base.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_container.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_iterator.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_iterator.tcc \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_local_iterator.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_local_iterator.tcc \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_sequence.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_sequence.tcc \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_unordered_base.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_unordered_container.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/safe_unordered_container.tcc \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/set \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/set.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/stl_iterator.h \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/string \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/unordered_map \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/unordered_set \
+@GLIBCXX_HOSTED_TRUE@	${debug_srcdir}/vector
 
 
 # Parallel mode headers
@@ -1416,6 +1444,7 @@ allcreated = \
 
 # Host includes for threads
 uppercase = [ABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+
 # By adding these files here, automake will remove them for 'make clean'
 CLEANFILES = ${pch_output} ${pch_output_anchors} stamp-host
 all: all-am
@@ -1906,45 +1935,8 @@ ${pch3_output}: ${pch3_source} ${pch2_output}
 	-mkdir -p ${pch3_output_builddir}
 	$(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) -O2 -g ${pch3_source} -o $@
 
-# For robustness sake (in light of junk files or in-source
-# configuration), copy from the build or source tree to the install
-# tree using only the human-maintained file lists and directory
-# components.  Yes, with minor differences, this is sheer duplication
-# of the staging rules above using $(INSTALL_DATA) instead of LN_S and
-# `$(mkinstalldirs)' instead of `mkdir -p'.  In particular,
-# host_headers_extra are taken out of the build tree staging area;
-# the rest are taken from the original source tree.
-
-@GLIBCXX_HOSTED_TRUE@install-data-local: install-headers
-@GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers
-
-# This is a subset of the full install-headers rule.  We only need <ciso646>,
-# <cstddef>, <cfloat>, <limits>, <climits>, <version>, <cstdint>, <cstdlib>,
-# <new>, <typeinfo>, <exception>, <initializer_list>, <cstdalign>, <cstdarg>,
-# <concepts>, <coroutine>, <cstdbool>, <type_traits>, <bit>, <atomic>,
-# <source_location> and any files which they include (and which we provide).
-# <new>, <typeinfo>, <exception>, <initializer_list> and <compare>
-# are installed by libsupc++, so only the others and the sub-includes
-# are copied here.
-install-freestanding-headers:
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/bits
-	for file in c++0x_warning.h atomic_base.h concept_check.h move.h; do \
-	  $(INSTALL_DATA) ${glibcxx_srcdir}/include/bits/$${file} $(DESTDIR)${gxx_include_dir}/bits; done
-	$(mkinstalldirs) $(DESTDIR)${host_installdir}
-	for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h \
-	  ${glibcxx_srcdir}/$(ABI_TWEAKS_SRCDIR)/cxxabi_tweaks.h \
-	  ${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
-	for file in limits type_traits atomic bit concepts coroutine \
-	  source_location version; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ciso646 cstddef cfloat climits cstdint cstdlib \
-	  cstdalign cstdarg cstdbool; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
-
 # The real deal.
+install-data-local: install-headers
 install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${bits_builddir}
@@ -1956,80 +1948,80 @@ install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${ext_builddir}
 	for file in ${ext_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${ext_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
-	for dir in ${pb_subdirs}; do \
-	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done
-	for file in ${pb_headers1}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers2}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers3}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers4}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers5}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers6}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	for file in ${pb_headers7}; do \
-	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
-	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
-	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr1_builddir}
-	for file in ${tr1_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr2_builddir}
-	for file in ${tr2_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr2_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${decimal_builddir}
-	for file in ${decimal_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${decimal_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${experimental_builddir}
-	for file in ${experimental_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${experimental_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}
-	for file in ${experimental_bits_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ${c_base_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
-	c_base_headers_extra_install='$(c_base_headers_extra)';\
-	for file in $$c_base_headers_extra_install; do \
-	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
-	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
-	for file in $$c_compatibility_headers_install; do \
-	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
 	for file in ${std_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
 	for file in ${debug_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir}
-	for file in ${parallel_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pb_builddir}
 	$(mkinstalldirs) $(DESTDIR)${host_installdir}
 	for file in ${host_headers} ${bits_host_headers} ${host_headers_extra} \
 	 ${thread_host_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
-	$(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
-	for file in ${ext_host_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
-	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pstl_builddir}
-	for file in ${pstl_headers}; do \
-	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${pstl_builddir}; done
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	for dir in ${pb_subdirs}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers1}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers2}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers3}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers4}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers5}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers6}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	for file in ${pb_headers7}; do \
+@GLIBCXX_HOSTED_TRUE@	  install_base=$(DESTDIR)${gxx_include_dir}/${pb_builddir} ; \
+@GLIBCXX_HOSTED_TRUE@	  relative_name=`echo $$file | sed -e "s|${pb_srcdir}|.|g"` ;\
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr1_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${tr1_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${tr2_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${tr2_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr2_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${decimal_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${decimal_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${decimal_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${experimental_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${experimental_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${experimental_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${experimental_bits_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${experimental_bits_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	c_base_headers_extra_install='$(c_base_headers_extra)';\
+@GLIBCXX_HOSTED_TRUE@	for file in $$c_base_headers_extra_install; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	c_compatibility_headers_install='$(c_compatibility_headers_extra)';\
+@GLIBCXX_HOSTED_TRUE@	for file in $$c_compatibility_headers_install; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${parallel_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${host_installdir}/../ext
+@GLIBCXX_HOSTED_TRUE@	for file in ${ext_host_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}/../ext; done
+@GLIBCXX_HOSTED_TRUE@	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pstl_builddir}
+@GLIBCXX_HOSTED_TRUE@	for file in ${pstl_headers}; do \
+@GLIBCXX_HOSTED_TRUE@	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${pstl_builddir}; done
 
 # To remove directories.
 clean-local:
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 07/10] libstdc++: Make some tests work on freestanding [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (5 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 06/10] libstdc++: Rework how freestanding install works [PR106953] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 08/10] libstdc++: Add effective-target 'hosted' for testsuite [PR103626] Arsen Arsenović
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović, Jonathan Wakely

PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding

Co-authored-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:
	PR libstdc++/103626
	* testsuite/17_intro/headers/c++1998/stdc++.cc [!__STDC_HOSTED__]:
	Do not include C headers that aren't valid for freestanding.
	* testsuite/17_intro/tag_type_explicit_ctor.cc [!__STDC_HOSTED__]:
	Do not test tag types that aren't defined for freestanding.
	* testsuite/18_support/headers/cstdlib/functions_std.cc: Do not
	check for std::getenv and std::system for freestanding.
	* testsuite/17_intro/using_namespace_std_exp_neg.cc [!__STDC_HOSTED__]:
	Do not test hosted parts of the standard library.
	* testsuite/17_intro/using_namespace_std_tr1_neg.cc [!__STDC_HOSTED__]:
	Likewise.
	* testsuite/20_util/allocator_traits/members/rebind_alloc.cc [!__STDC_HOSTED__]:
	Likewise.
	* testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc [!HOSTED]:
	Likewise.
	* testsuite/20_util/headers/bitset/synopsis.cc [!__STDC_HOSTED__]: Likewise.
	* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc [!__STDC_HOSTED__]:
	Likewise.
	* testsuite/20_util/pointer_traits/requirements/typedefs.cc [!__STDC_HOSTED__]:
	Likewise.
	* testsuite/20_util/tuple/cons/deduction.cc [!__STDC_HOSTED__]: Likewise.
	* testsuite/25_algorithms/move/93872.cc [!__STDC_HOSTED__]: Likewise.
	* testsuite/std/ranges/adaptors/100577.cc [!__STDC_HOSTED__]: Likewise.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 .../17_intro/headers/c++1998/stdc++.cc        |  2 +
 .../17_intro/tag_type_explicit_ctor.cc        | 32 +++++++----
 .../17_intro/using_namespace_std_exp_neg.cc   | 53 ++++++++++---------
 .../17_intro/using_namespace_std_tr1_neg.cc   | 53 ++++++++++---------
 .../headers/cstdlib/functions_std.cc          |  2 +
 .../allocator_traits/members/rebind_alloc.cc  |  2 +
 .../requirements/explicit_instantiation.cc    |  2 +
 .../20_util/headers/bitset/synopsis.cc        |  2 +
 .../requirements/typedefs_neg.cc              |  4 +-
 .../pointer_traits/requirements/typedefs.cc   |  2 +
 .../testsuite/20_util/tuple/cons/deduction.cc |  2 +
 .../testsuite/25_algorithms/move/93872.cc     |  1 +
 .../testsuite/std/ranges/adaptors/100577.cc   | 11 +++-
 13 files changed, 104 insertions(+), 64 deletions(-)

diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
index 4776c18e1ed..e362dfee329 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
@@ -24,6 +24,7 @@
 
 #include <bits/stdc++.h>
 
+#if __STDC_HOSTED__
 // "C" compatibility headers
 #include <assert.h>
 #include <ctype.h>
@@ -47,3 +48,4 @@
 #ifdef _GLIBCXX_HAVE_WCTYPE_H
 #include <wctype.h>
 #endif
+#endif
diff --git a/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc b/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
index 262fc9a04d1..410142d3974 100644
--- a/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
+++ b/libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
@@ -20,40 +20,50 @@
 #include <new>
 #include <utility>
 #include <memory>
-#include <mutex>
+
+#if __STDC_HOSTED__
+#  include <mutex>
+#endif
 
 void f1(std::nothrow_t);
 void f2(std::piecewise_construct_t);
 void f3(std::allocator_arg_t);
+#if __STDC_HOSTED__
 void f4(std::defer_lock_t);
 void f5(std::try_to_lock_t);
 void f6(std::adopt_lock_t);
-
+#endif
 
 int main()
 {
   std::nothrow_t v1;
   std::piecewise_construct_t v2;
   std::allocator_arg_t v3;
+#if __STDC_HOSTED__
   std::defer_lock_t v4;
   std::try_to_lock_t v5;
   std::try_to_lock_t v6;
+#endif
   std::nothrow_t v7 = {}; // { dg-error "explicit" }
   std::piecewise_construct_t v8 = {}; // { dg-error "explicit" }
   std::allocator_arg_t v9 = {}; // { dg-error "explicit" }
-  std::defer_lock_t v10 = {}; // { dg-error "explicit" }
-  std::try_to_lock_t v11 = {}; // { dg-error "explicit" }
-  std::try_to_lock_t v12 = {}; // { dg-error "explicit" }
+#if __STDC_HOSTED__
+  std::defer_lock_t v10 = {};  // { dg-error "explicit" "" { target hosted } }
+  std::try_to_lock_t v11 = {}; // { dg-error "explicit" "" { target hosted } }
+  std::try_to_lock_t v12 = {}; // { dg-error "explicit" "" { target hosted } }
+#endif
   f1(std::nothrow_t{});
   f2(std::piecewise_construct_t{});
   f3(std::allocator_arg_t{});
-  f4(std::defer_lock_t{});
-  f5(std::try_to_lock_t{});
-  f6(std::adopt_lock_t{});
   f1({}); // { dg-error "explicit" }
   f2({}); // { dg-error "explicit" }
   f3({}); // { dg-error "explicit" }
-  f4({}); // { dg-error "explicit" }
-  f5({}); // { dg-error "explicit" }
-  f6({}); // { dg-error "explicit" }
+#if __STDC_HOSTED__
+  f4(std::defer_lock_t{});
+  f5(std::try_to_lock_t{});
+  f6(std::adopt_lock_t{});
+  f4({}); // { dg-error "explicit" "" { target hosted } }
+  f5({}); // { dg-error "explicit" "" { target hosted } }
+  f6({}); // { dg-error "explicit" "" { target hosted } }
+#endif
 }
diff --git a/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc b/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
index cdec24e9f7f..9fadafdbccf 100644
--- a/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
+++ b/libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
@@ -20,42 +20,45 @@
 #include <algorithm>
 #include <array>
 #include <bitset>
-#include <complex>
-#include <deque>
 #include <exception>
-#include <fstream>
 #include <functional>
-#include <iomanip>
-#include <ios>
-#include <iosfwd>
-#include <iostream>
-#include <istream>
 #include <iterator>
 #include <limits>
-#include <list>
-#include <locale>
-#include <map>
 #include <memory>
 #include <new>
 #include <numeric>
-#include <ostream>
-#include <queue>
-#include <random>
-#include <regex>
-#include <set>
-#include <sstream>
-#include <stack>
-#include <stdexcept>
-#include <streambuf>
-#include <string>
 #include <tuple>
 #include <typeinfo>
 #include <type_traits>
-#include <unordered_map>
-#include <unordered_set>
 #include <utility>
-#include <valarray>
-#include <vector>
+
+#if __STDC_HOSTED__
+#  include <complex>
+#  include <deque>
+#  include <fstream>
+#  include <iomanip>
+#  include <ios>
+#  include <iosfwd>
+#  include <iostream>
+#  include <istream>
+#  include <list>
+#  include <locale>
+#  include <map>
+#  include <ostream>
+#  include <queue>
+#  include <random>
+#  include <regex>
+#  include <set>
+#  include <sstream>
+#  include <stack>
+#  include <stdexcept>
+#  include <streambuf>
+#  include <string>
+#  include <unordered_map>
+#  include <unordered_set>
+#  include <valarray>
+#  include <vector>
+#endif
 
 namespace gnu
 {
diff --git a/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc b/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
index 31c2589da4f..4d08cc5bc91 100644
--- a/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
+++ b/libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
@@ -23,42 +23,45 @@
 #include <algorithm>
 #include <array>
 #include <bitset>
-#include <complex>
-#include <deque>
 #include <exception>
-#include <fstream>
 #include <functional>
-#include <iomanip>
-#include <ios>
-#include <iosfwd>
-#include <iostream>
-#include <istream>
 #include <iterator>
 #include <limits>
-#include <list>
-#include <locale>
-#include <map>
 #include <memory>
 #include <new>
 #include <numeric>
-#include <ostream>
-#include <queue>
-#include <random>
-#include <regex>
-#include <set>
-#include <sstream>
-#include <stack>
-#include <stdexcept>
-#include <streambuf>
-#include <string>
 #include <tuple>
 #include <typeinfo>
 #include <type_traits>
-#include <unordered_map>
-#include <unordered_set>
 #include <utility>
-#include <valarray>
-#include <vector>
+
+#if __STDC_HOSTED__
+#  include <complex>
+#  include <deque>
+#  include <fstream>
+#  include <iomanip>
+#  include <ios>
+#  include <iosfwd>
+#  include <iostream>
+#  include <istream>
+#  include <list>
+#  include <locale>
+#  include <map>
+#  include <ostream>
+#  include <queue>
+#  include <random>
+#  include <regex>
+#  include <set>
+#  include <sstream>
+#  include <stack>
+#  include <stdexcept>
+#  include <streambuf>
+#  include <string>
+#  include <unordered_map>
+#  include <unordered_set>
+#  include <valarray>
+#  include <vector>
+#endif
 
 namespace gnu
 {
diff --git a/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc b/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
index e7738899ea0..af1ed6a8652 100644
--- a/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
+++ b/libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
@@ -25,6 +25,8 @@ namespace gnu
   using std::atexit;
   using std::exit;
 
+#if __STDC_HOSTED__
   using std::getenv;
   using std::system;
+#endif
 }
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
index 32caf53c988..ca2a8044665 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
@@ -24,6 +24,7 @@ using std::is_same;
 template<typename T, typename U>
   using Rebind = typename std::allocator_traits<T>::template rebind_alloc<U>;
 
+#if __STDC_HOSTED__
 template<typename T>
   struct HasRebind {
     using value_type = T;
@@ -33,6 +34,7 @@ template<typename T>
 static_assert(is_same<Rebind<HasRebind<int>, long>,
 		      std::allocator<long>>::value,
 	      "nested alias template is used");
+#endif
 
 template<typename T>
   struct NoRebind0 {
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
index 42a2091cf47..8f7c191e94a 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
@@ -36,6 +36,8 @@ template<typename T>
 
 namespace std
 {
+#if __STDC_HOSTED__
   template struct allocator_traits<std::allocator<test_type>>;
+#endif
   template struct allocator_traits<minimal_allocator<test_type>>;
 }
diff --git a/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc b/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc
index ed5604b6b22..094f0f268b3 100644
--- a/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc
+++ b/libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc
@@ -49,6 +49,7 @@ namespace std {
     CONSTEXPR
     bitset<N> operator^(const bitset<N>&, const bitset<N>&) NOTHROW;
 
+#if __STDC_HOSTED__
   template <class charT, class traits, size_t N>
     basic_istream<charT, traits>&
     operator>>(basic_istream<charT, traits>& is, bitset<N>& x);
@@ -56,4 +57,5 @@ namespace std {
   template <class charT, class traits, size_t N>
     basic_ostream<charT, traits>&
     operator<<(basic_ostream<charT, traits>& os, const bitset<N>& x);
+#endif
 }
diff --git a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
index 9eebbc400b0..ff98cc42ef7 100644
--- a/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
@@ -20,9 +20,9 @@
 // <http://www.gnu.org/licenses/>.
 
 #include <type_traits>
-#include <testsuite_character.h>
 
 enum test_enum { first_selection };
+struct pod_class { };
 
 void test01()
 {
@@ -31,7 +31,7 @@ void test01()
   // Negative tests.
   typedef make_unsigned<bool>::type     	test1_type;
 
-  typedef make_unsigned<__gnu_test::pod_uint>::type     	test2_type;
+  typedef make_unsigned<pod_class>::type     	test2_type;
 
   typedef make_unsigned<int[4]>::type     test3_type;
 
diff --git a/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
index 93c8a369c25..a88372c4d3a 100644
--- a/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
@@ -37,8 +37,10 @@ int main()
 {
   test01<int*>();
   test01<void*>();
+#if __STDC_HOSTED__
   test01<std::shared_ptr<int>>();
   test01<std::shared_ptr<void>>();
+#endif
   test01<std::unique_ptr<int>>();
   test01<std::unique_ptr<void>>();
 }
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
index 8b9393dd334..c4b5a5c1eaf 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
@@ -145,6 +145,7 @@ test04()
 void
 test05()
 {
+#if __STDC_HOSTED__
   std::allocator<double> a;
   std::tuple x{std::allocator_arg, a, 1};
   check_type<std::tuple<int>>(x);
@@ -161,4 +162,5 @@ test05()
   check_type<decltype(x)>(x5);
   std::tuple x6{std::allocator_arg, a, std::move(x)};
   check_type<decltype(x)>(x6);
+#endif
 }
diff --git a/libstdc++-v3/testsuite/25_algorithms/move/93872.cc b/libstdc++-v3/testsuite/25_algorithms/move/93872.cc
index 4b0c8105171..8496a221063 100644
--- a/libstdc++-v3/testsuite/25_algorithms/move/93872.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/move/93872.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 
+#include <iterator>
 #include <algorithm>
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc
index 97401dae39c..c900553743b 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc
@@ -22,6 +22,9 @@
 
 #include <ranges>
 #include <functional>
+#if __STDC_HOSTED__
+#include <string>
+#endif
 
 namespace ranges = std::ranges;
 namespace views = std::ranges::views;
@@ -38,9 +41,11 @@ test01()
   static_assert(__adaptor_has_simple_extra_args<decltype(views::take), int>);
   static_assert(__adaptor_has_simple_extra_args<decltype(views::take_while), identity>);
   static_assert(__adaptor_has_simple_extra_args<decltype(views::drop_while), identity>);
-  static_assert(__adaptor_has_simple_extra_args<decltype(views::lazy_split), std::string_view>);
   static_assert(__adaptor_has_simple_extra_args<decltype(views::lazy_split), char>);
+#if __STDC_HOSTED__
+  static_assert(__adaptor_has_simple_extra_args<decltype(views::lazy_split), std::string_view>);
   static_assert(!__adaptor_has_simple_extra_args<decltype(views::lazy_split), std::string>);
+#endif
 
   using views::__adaptor::__closure_has_simple_call_op;
   __closure_has_simple_call_op auto a00 = views::all;
@@ -60,6 +65,7 @@ test01()
   __closure_has_simple_call_op auto b
     = (a00 | a01) | (a02 | a03) | (a04 | a05 | a06) | (a07 | a08 | a09 | a10) | a11;
 
+#if __STDC_HOSTED__
   // Verify views::lazy_split(non_view_range) is an exception.
   extern std::string s;
   auto a12 = views::lazy_split(s);
@@ -72,6 +78,7 @@ test01()
   static_assert(!__closure_has_simple_call_op<decltype(a12a)>);
   static_assert(!__closure_has_simple_call_op<decltype(a12a | a00)>);
   static_assert(!__closure_has_simple_call_op<decltype(a00 | a12a)>);
+#endif
 }
 
 void
@@ -129,6 +136,7 @@ test03()
 void
 test04()
 {
+#if __STDC_HOSTED__
   // Non-trivially-copyable extra arguments make a closure not simple.
   using F = std::function<bool(bool)>;
   static_assert(!std::is_trivially_copyable_v<F>);
@@ -137,6 +145,7 @@ test04()
   static_assert(!__closure_has_simple_call_op<decltype(views::drop_while(std::declval<F>()))>);
   static_assert(!__closure_has_simple_call_op<decltype(views::filter(std::declval<F>()))>);
   static_assert(!__closure_has_simple_call_op<decltype(views::transform(std::declval<F>()))>);
+#endif
 }
 
 // { dg-prune-output "in requirements" }
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 08/10] libstdc++: Add effective-target 'hosted' for testsuite [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (6 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 07/10] libstdc++: Make some tests work on freestanding [PR103626] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 09/10] libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626] Arsen Arsenović
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Jonathan Wakely, Arsen Arsenović

From: Jonathan Wakely <jwakely@redhat.com>

PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding

libstdc++-v3/ChangeLog:
	PR libstdc++/103626
	* testsuite/lib/libstdc++.exp (check_effective_target_stacktrace):
	Also require hosted.
	(check_effective_target_hosted): New proc.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/testsuite/lib/libstdc++.exp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/libstdc++-v3/testsuite/lib/libstdc++.exp b/libstdc++-v3/testsuite/lib/libstdc++.exp
index d3256b6c8c4..635f16db4e8 100644
--- a/libstdc++-v3/testsuite/lib/libstdc++.exp
+++ b/libstdc++-v3/testsuite/lib/libstdc++.exp
@@ -1376,7 +1376,7 @@ proc check_effective_target_std_allocator_new { } {
 # Return 1 if libstdc++ was built as --enable-libstdcxx-backtrace
 proc check_effective_target_stacktrace { } {
     return [check_v3_target_prop_cached et_stacktrace {
-	set cond "_GLIBCXX_HAVE_STACKTRACE"
+	set cond "_GLIBCXX_HAVE_STACKTRACE && _GLIBCXX_HOSTED"
 	return [v3_check_preprocessor_condition stacktrace $cond]
     }]
 }
@@ -1389,6 +1389,14 @@ proc check_effective_target_rtti { } {
     }]
 }
 
+# Return 1 if a hosted implementation is available (i.e. not freestanding).
+proc check_effective_target_hosted { } {
+    return [check_v3_target_prop_cached et_hosted {
+	set cond "_GLIBCXX_HOSTED"
+	return [v3_check_preprocessor_condition hosted $cond]
+    }]
+}
+
 set additional_prunes ""
 
 if { [info exists env(GCC_RUNTEST_PARALLELIZE_DIR)] \
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 09/10] libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (7 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 08/10] libstdc++: Add effective-target 'hosted' for testsuite [PR103626] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 16:45 ` [PATCH 10/10] libstdc++: Disable hosted-only tests [PR103626] Arsen Arsenović
  2022-09-30 18:15 ` [PATCH 00/10] c-family,libstdc++: P1642 and related changes Jonathan Wakely
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding

libstdc++-v3/ChangeLog:
	PR libstdc++/103626
	* include/std/bitset [!_GLIBCXX_HOSTED]: Re-enable std::hash.
	* testsuite/20_util/bitset/cons/constexpr_c++23.cc: Require ET
	hosted.
	* testsuite/20_util/bitset/ext/constexpr.cc: Likewise.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 libstdc++-v3/include/std/bitset                          | 9 +++++----
 .../testsuite/20_util/bitset/cons/constexpr_c++23.cc     | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc   | 2 ++
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset
index 3fe8b18735c..b0b7f3f5482 100644
--- a/libstdc++-v3/include/std/bitset
+++ b/libstdc++-v3/include/std/bitset
@@ -52,9 +52,10 @@
 # include <string>
 # include <iosfwd>
 # include <bits/cxxabi_forced.h>
-# if __cplusplus >= 201103L
-#  include <bits/functional_hash.h>
-# endif
+#endif
+
+#if __cplusplus >= 201103L
+# include <bits/functional_hash.h>
 #endif
 
 #define _GLIBCXX_BITSET_BITS_PER_WORD  (__CHAR_BIT__ * __SIZEOF_LONG__)
@@ -1649,7 +1650,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER
 #undef _GLIBCXX_BITSET_BITS_PER_WORD
 #undef _GLIBCXX_BITSET_BITS_PER_ULL
 
-#if __cplusplus >= 201103L && _GLIBCXX_HOSTED
+#if __cplusplus >= 201103L
 
 namespace std _GLIBCXX_VISIBILITY(default)
 {
diff --git a/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
index 532fc9dc4d5..d308c2b2f10 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
@@ -1,5 +1,7 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// This test relies on std::string.
+// { dg-require-effective-target hosted }
 
 #include <bitset>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc b/libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc
index f82e7aa409a..4bacefad14a 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc
@@ -1,5 +1,7 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// This test relies on std::string.
+// { dg-require-effective-target hosted }
 
 #include <bitset>
 #include <testsuite_hooks.h>
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 10/10] libstdc++: Disable hosted-only tests [PR103626]
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (8 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 09/10] libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626] Arsen Arsenović
@ 2022-09-30 16:45 ` Arsen Arsenović
  2022-09-30 18:15 ` [PATCH 00/10] c-family,libstdc++: P1642 and related changes Jonathan Wakely
  10 siblings, 0 replies; 13+ messages in thread
From: Arsen Arsenović @ 2022-09-30 16:45 UTC (permalink / raw)
  To: gcc-patches; +Cc: libstdc++, Arsen Arsenović

PR libstdc++/103626 - _GLIBCXX_HOSTED should respect -ffreestanding

libstdc++-v3/ChangeLog:
	PR libstdc++/103626
	* testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc:
	Require ET hosted.
	* testsuite/18_support/aligned_alloc/aligned_alloc.cc: Likewise.
	* testsuite/18_support/new_nothrow.cc: Likewise.
	* testsuite/20_util/allocator/105975.cc: Likewise.
	* testsuite/20_util/allocator/14176.cc: Likewise.
	* testsuite/20_util/allocator/64135.cc: Likewise.
	* testsuite/20_util/allocator/89510.cc: Likewise.
	* testsuite/20_util/allocator/lwg3190.cc: Likewise.
	* testsuite/20_util/allocator/overaligned.cc: Likewise.
	* testsuite/20_util/allocator/rebind_c++20.cc: Likewise.
	* testsuite/20_util/allocator/requirements/constexpr.cc:
	Likewise.
	* testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc:
	Likewise.
	* testsuite/20_util/allocator/requirements/typedefs.cc:
	Likewise.
	* testsuite/20_util/allocator/requirements/typedefs_c++20.cc:
	Likewise.
	* testsuite/20_util/allocator/void.cc: Likewise.
	* testsuite/20_util/allocator_traits/header-2.cc: Likewise.
	* testsuite/20_util/allocator_traits/header.cc: Likewise.
	* testsuite/20_util/allocator_traits/members/92878_92947.cc:
	Likewise.
	* testsuite/20_util/allocator_traits/members/pointers.cc:
	Likewise.
	* testsuite/20_util/allocator_traits/requirements/typedefs.cc:
	Likewise.
	* testsuite/20_util/bad_function_call/cons_virtual_derivation.cc:
	Likewise.
	* testsuite/20_util/bind/42593.cc: Likewise.
	* testsuite/20_util/bitset/access/dr396.cc: Likewise.
	* testsuite/20_util/bitset/access/to_string.cc: Likewise.
	* testsuite/20_util/bitset/access/to_ullong.cc: Likewise.
	* testsuite/20_util/bitset/cons/16020.cc: Likewise.
	* testsuite/20_util/bitset/cons/dr1325-2.cc: Likewise.
	* testsuite/20_util/bitset/cons/dr396.cc: Likewise.
	* testsuite/20_util/bitset/debug/invalidation/1.cc: Likewise.
	* testsuite/20_util/bitset/ext/15361.cc: Likewise.
	* testsuite/20_util/bitset/operations/13838.cc: Likewise.
	* testsuite/20_util/bitset/operations/96303.cc: Likewise.
	* testsuite/20_util/bitset/version.cc: Likewise.
	* testsuite/20_util/enable_shared_from_this/56383.cc: Likewise.
	* testsuite/20_util/enable_shared_from_this/89303.cc: Likewise.
	* testsuite/20_util/enable_shared_from_this/members/assign.cc:
	Likewise.
	* testsuite/20_util/enable_shared_from_this/members/const.cc:
	Likewise.
	* testsuite/20_util/enable_shared_from_this/members/reinit.cc:
	Likewise.
	* testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc:
	Likewise.
	* testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc:
	Likewise.
	* testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/forward/1.cc: Likewise.
	* testsuite/20_util/forward/1_neg.cc: Likewise.
	* testsuite/20_util/function/1.cc: Likewise.
	* testsuite/20_util/function/10.cc: Likewise.
	* testsuite/20_util/function/2.cc: Likewise.
	* testsuite/20_util/function/3.cc: Likewise.
	* testsuite/20_util/function/4.cc: Likewise.
	* testsuite/20_util/function/43397.cc: Likewise.
	* testsuite/20_util/function/48541.cc: Likewise.
	* testsuite/20_util/function/5.cc: Likewise.
	* testsuite/20_util/function/58569.cc: Likewise.
	* testsuite/20_util/function/6.cc: Likewise.
	* testsuite/20_util/function/60594.cc: Likewise.
	* testsuite/20_util/function/65760.cc: Likewise.
	* testsuite/20_util/function/69222.cc: Likewise.
	* testsuite/20_util/function/7.cc: Likewise.
	* testsuite/20_util/function/77322.cc: Likewise.
	* testsuite/20_util/function/8.cc: Likewise.
	* testsuite/20_util/function/9.cc: Likewise.
	* testsuite/20_util/function/91456.cc: Likewise.
	* testsuite/20_util/function/assign/move.cc: Likewise.
	* testsuite/20_util/function/assign/move_target.cc: Likewise.
	* testsuite/20_util/function/cmp/cmp_neg.cc: Likewise.
	* testsuite/20_util/function/cons/55320.cc: Likewise.
	* testsuite/20_util/function/cons/57465.cc: Likewise.
	* testsuite/20_util/function/cons/72820.cc: Likewise.
	* testsuite/20_util/function/cons/addressof.cc: Likewise.
	* testsuite/20_util/function/cons/callable.cc: Likewise.
	* testsuite/20_util/function/cons/deduction.cc: Likewise.
	* testsuite/20_util/function/cons/lwg2774.cc: Likewise.
	* testsuite/20_util/function/cons/move.cc: Likewise.
	* testsuite/20_util/function/cons/move_target.cc: Likewise.
	* testsuite/20_util/function/cons/noexcept.cc: Likewise.
	* testsuite/20_util/function/cons/non_copyconstructible.cc:
	Likewise.
	* testsuite/20_util/function/cons/refqual.cc: Likewise.
	* testsuite/20_util/function/cons/70692.cc: Likewise.
	* testsuite/20_util/function/cons/deduction_c++23.cc: Likewise.
	* testsuite/20_util/function/invoke/forwarding.cc: Likewise.
	* testsuite/20_util/function/invoke/move_only.cc: Likewise.
	* testsuite/20_util/function/null_pointer_comparisons.cc:
	Likewise.
	* testsuite/20_util/function/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/function/target_no_rtti.cc: Likewise.
	* testsuite/20_util/function_objects/83607.cc: Likewise.
	* testsuite/20_util/function_objects/mem_fn/adl.cc: Likewise.
	* testsuite/20_util/headers/cstdlib/functions_std.cc: Likewise.
	* testsuite/20_util/headers/functional/types_std_c++0x.cc:
	Likewise.
	* testsuite/20_util/headers/memory/types_std_c++0x.cc: Likewise.
	* testsuite/20_util/is_function/35637.cc: Likewise.
	* testsuite/20_util/move/1.cc: Likewise.
	* testsuite/20_util/move_only_function/call.cc: Likewise.
	* testsuite/20_util/move_only_function/cons.cc: Likewise.
	* testsuite/20_util/move_only_function/move.cc: Likewise.
	* testsuite/20_util/move_only_function/version.cc: Likewise.
	* testsuite/20_util/owner_less/cmp.cc: Likewise.
	* testsuite/20_util/owner_less/noexcept.cc: Likewise.
	* testsuite/20_util/owner_less/void.cc: Likewise.
	* testsuite/20_util/pointer_safety/1.cc: Likewise.
	* testsuite/20_util/scoped_allocator/65279.cc: Likewise.
	* testsuite/20_util/scoped_allocator/69293_neg.cc: Likewise.
	* testsuite/20_util/scoped_allocator/construct_pair.cc:
	Likewise.
	* testsuite/20_util/scoped_allocator/dr2586.cc: Likewise.
	* testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/assign/assign.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/auto_ptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/assign/dr541.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/move.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/sfinae.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/shared_ptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/atomic/1.cc: Likewise.
	* testsuite/20_util/shared_ptr/atomic/2.cc: Likewise.
	* testsuite/20_util/shared_ptr/casts/1.cc: Likewise.
	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
	* testsuite/20_util/shared_ptr/casts/rval.cc: Likewise.
	* testsuite/20_util/shared_ptr/comparison/42925.cc: Likewise.
	* testsuite/20_util/shared_ptr/comparison/86537.cc: Likewise.
	* testsuite/20_util/shared_ptr/comparison/cmp.cc: Likewise.
	* testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/comparison/dr1401.cc: Likewise.
	* testsuite/20_util/shared_ptr/comparison/less.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/39405.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/46910.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/51365.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/52924.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/55123.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/58659.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/58839.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/61036.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/79467.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/80229.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/alias-rval.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/alias.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/auto_ptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/copy.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/default.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/lwg2802.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/lwg3548.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/move.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/nullptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/pointer.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/unique_ptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/cons/weak_ptr.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/36949.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/creation/58594.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/87278.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/92878_92947.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/creation/99006.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/dr402.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/dr925.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/make.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/no_rtti.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/overwrite.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/private.cc: Likewise.
	* testsuite/20_util/shared_ptr/creation/single_allocation.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/creation/version.cc: Likewise.
	* testsuite/20_util/shared_ptr/dest/dest.cc: Likewise.
	* testsuite/20_util/shared_ptr/hash/1.cc: Likewise.
	* testsuite/20_util/shared_ptr/misc/24595.cc: Likewise.
	* testsuite/20_util/shared_ptr/misc/42019.cc: Likewise.
	* testsuite/20_util/shared_ptr/misc/get_deleter.cc: Likewise.
	* testsuite/20_util/shared_ptr/misc/swap.cc: Likewise.
	* testsuite/20_util/shared_ptr/modifiers/reset.cc: Likewise.
	* testsuite/20_util/shared_ptr/modifiers/reset_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/modifiers/swap.cc: Likewise.
	* testsuite/20_util/shared_ptr/modifiers/swap_neg.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/array.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/bool_conv.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/get.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/owner_before.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/observers/unique.cc: Likewise.
	* testsuite/20_util/shared_ptr/observers/use_count.cc: Likewise.
	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc:
	Likewise.
	* testsuite/20_util/shared_ptr/requirements/weak_type.cc:
	Likewise.
	* testsuite/20_util/specialized_algorithms/construct_at/95788.cc:
	Likewise.
	* testsuite/20_util/temporary_buffer.cc: Likewise.
	* testsuite/20_util/tuple/48476.cc: Likewise.
	* testsuite/20_util/tuple/cons/90700.cc: Likewise.
	* testsuite/20_util/tuple/cons/96803.cc: Likewise.
	* testsuite/20_util/tuple/cons/allocator_with_any.cc: Likewise.
	* testsuite/20_util/tuple/cons/allocators.cc: Likewise.
	* testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc:
	Likewise.
	* testsuite/20_util/tuple/cons/explicit_construct.cc: Likewise.
	* testsuite/20_util/tuple/p2321r2.cc: Likewise.
	* testsuite/20_util/unique_ptr/creation/92878_92947.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/creation/array.cc: Likewise.
	* testsuite/20_util/unique_ptr/creation/array_neg.cc: Likewise.
	* testsuite/20_util/unique_ptr/creation/constexpr.cc: Likewise.
	* testsuite/20_util/unique_ptr/creation/for_overwrite.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc:
	Likewise.
	* testsuite/20_util/unique_ptr/creation/single.cc: Likewise.
	* testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
	* testsuite/20_util/uses_allocator/92878_92947.cc: Likewise.
	* testsuite/20_util/uses_allocator/uninitialized_construct.cc:
	Likewise.
	* testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Likewise.
	* testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
	* testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc:
	Likewise.
	* testsuite/20_util/weak_ptr/lock/1.cc: Likewise.
	* testsuite/20_util/weak_ptr/observers/owner_before.cc:
	Likewise.
	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc:
	Likewise.
	* testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc:
	Likewise.
	* testsuite/21_strings/basic_string/version.cc: Likewise.
	* testsuite/21_strings/basic_string_view/operations/contains/char/2.cc:
	Likewise.
	* testsuite/21_strings/c_strings/char/69626.cc: Likewise.
	* testsuite/21_strings/char_traits/requirements/version.cc:
	Likewise.
	* testsuite/23_containers/vector/requirements/version.cc:
	Likewise.
	* testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/insert_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/istream_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/istreambuf_iterator/92285.cc: Likewise.
	* testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc:
	Likewise.
	* testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc:
	Likewise.
	* testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc:
	Likewise.
	* testsuite/25_algorithms/constexpr_macro.cc: Likewise.
	* testsuite/25_algorithms/equal/constrained.cc: Likewise.
	* testsuite/25_algorithms/headers/cstdlib/functions_std.cc:
	Likewise.
	* testsuite/25_algorithms/inplace_merge/1.cc: Likewise.
	* testsuite/25_algorithms/lexicographical_compare/constrained.cc:
	Likewise.
	* testsuite/25_algorithms/make_heap/movable.cc: Likewise.
	* testsuite/25_algorithms/pstl/feature_test-4.cc: Likewise.
	* testsuite/25_algorithms/random_shuffle/1.cc: Likewise.
	* testsuite/25_algorithms/random_shuffle/moveable.cc: Likewise.
	* testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc:
	Likewise.
	* testsuite/25_algorithms/sort/35588.cc: Likewise.
	* testsuite/25_algorithms/stable_partition/1.cc: Likewise.
	* testsuite/25_algorithms/stable_partition/constrained.cc:
	Likewise.
	* testsuite/25_algorithms/stable_partition/mem_check.cc:
	Likewise.
	* testsuite/25_algorithms/stable_partition/moveable.cc:
	Likewise.
	* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc:
	Likewise.
	* testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc:
	Likewise.
	* testsuite/25_algorithms/stable_sort/1.cc: Likewise.
	* testsuite/26_numerics/complex/2.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/13943.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/2190.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/60401.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/dr2192.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/dr2735.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/functions_std.cc:
	Likewise.
	* testsuite/26_numerics/headers/cstdlib/macros.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/types_std.cc: Likewise.
	* testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc:
	Likewise.
	* testsuite/26_numerics/lerp/version.cc: Likewise.
	* testsuite/26_numerics/midpoint/version.cc: Likewise.
	* testsuite/27_io/basic_syncbuf/2.cc: Likewise.
	* testsuite/27_io/basic_syncstream/2.cc: Likewise.
	* testsuite/27_io/fpos/14320-1.cc: Likewise.
	* testsuite/27_io/fpos/14320-2.cc: Likewise.
	* testsuite/27_io/fpos/14320-3.cc: Likewise.
	* testsuite/27_io/fpos/14320-4.cc: Likewise.
	* testsuite/27_io/spanstream/version.cc: Likewise.
	* testsuite/29_atomics/atomic/lwg3220.cc: Likewise.
	* testsuite/29_atomics/atomic/operators/51811.cc: Likewise.
	* testsuite/29_atomics/atomic/wait_notify/1.cc: Likewise.
	* testsuite/29_atomics/atomic/wait_notify/102994.cc: Likewise.
	* testsuite/29_atomics/atomic/wait_notify/2.cc: Likewise.
	* testsuite/29_atomics/headers/stdatomic.h/version.cc: Likewise.
	* testsuite/30_threads/barrier/2.cc: Likewise.
	* testsuite/30_threads/condition_variable_any/stop_token/2.cc:
	Likewise.
	* testsuite/30_threads/jthread/version.cc: Likewise.
	* testsuite/30_threads/latch/2.cc: Likewise.
	* testsuite/30_threads/semaphore/2.cc: Likewise.
	* testsuite/30_threads/stop_token/2.cc: Likewise.
	* testsuite/abi/pr42230.cc: Likewise.
	* testsuite/ext/shared_ptr/1.cc: Likewise.
	* testsuite/std/ranges/adaptors/lazy_split_neg.cc: Likewise.
	* testsuite/std/ranges/adaptors/p1739.cc: Likewise.
	* testsuite/std/ranges/iota/lwg3292_neg.cc: Likewise.
	* testsuite/std/ranges/p2325.cc: Likewise.

Signed-off-by: Arsen Arsenović <arsen@aarsen.me>
---
 .../testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc | 1 +
 .../testsuite/18_support/aligned_alloc/aligned_alloc.cc     | 1 +
 libstdc++-v3/testsuite/18_support/new_nothrow.cc            | 1 +
 libstdc++-v3/testsuite/20_util/allocator/105975.cc          | 1 +
 libstdc++-v3/testsuite/20_util/allocator/14176.cc           | 2 ++
 libstdc++-v3/testsuite/20_util/allocator/64135.cc           | 1 +
 libstdc++-v3/testsuite/20_util/allocator/89510.cc           | 1 +
 libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc         | 1 +
 libstdc++-v3/testsuite/20_util/allocator/overaligned.cc     | 1 +
 libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc    | 1 +
 .../testsuite/20_util/allocator/requirements/constexpr.cc   | 5 +++--
 .../allocator/requirements/explicit_instantiation/1.cc      | 1 +
 .../testsuite/20_util/allocator/requirements/typedefs.cc    | 1 +
 .../20_util/allocator/requirements/typedefs_c++20.cc        | 5 +++--
 libstdc++-v3/testsuite/20_util/allocator/void.cc            | 1 +
 libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc | 5 +++--
 libstdc++-v3/testsuite/20_util/allocator_traits/header.cc   | 5 +++--
 .../20_util/allocator_traits/members/92878_92947.cc         | 6 ++++--
 .../testsuite/20_util/allocator_traits/members/pointers.cc  | 1 +
 .../20_util/allocator_traits/requirements/typedefs.cc       | 1 +
 .../20_util/bad_function_call/cons_virtual_derivation.cc    | 2 ++
 libstdc++-v3/testsuite/20_util/bind/42593.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc       | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc   | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc   | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc         | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc      | 1 +
 libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc         | 2 ++
 .../testsuite/20_util/bitset/debug/invalidation/1.cc        | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc          | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc   | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc   | 2 ++
 libstdc++-v3/testsuite/20_util/bitset/version.cc            | 1 +
 .../testsuite/20_util/enable_shared_from_this/56383.cc      | 1 +
 .../testsuite/20_util/enable_shared_from_this/89303.cc      | 1 +
 .../20_util/enable_shared_from_this/members/assign.cc       | 1 +
 .../20_util/enable_shared_from_this/members/const.cc        | 1 +
 .../20_util/enable_shared_from_this/members/reinit.cc       | 1 +
 .../20_util/enable_shared_from_this/members/unique_ptr.cc   | 1 +
 .../enable_shared_from_this/members/weak_from_this.cc       | 1 +
 .../requirements/explicit_instantiation.cc                  | 1 +
 libstdc++-v3/testsuite/20_util/forward/1.cc                 | 1 +
 libstdc++-v3/testsuite/20_util/forward/1_neg.cc             | 1 +
 libstdc++-v3/testsuite/20_util/function/1.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/10.cc               | 1 +
 libstdc++-v3/testsuite/20_util/function/2.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/3.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/4.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/43397.cc            | 2 ++
 libstdc++-v3/testsuite/20_util/function/48541.cc            | 2 ++
 libstdc++-v3/testsuite/20_util/function/5.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/58569.cc            | 2 ++
 libstdc++-v3/testsuite/20_util/function/6.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/60594.cc            | 1 +
 libstdc++-v3/testsuite/20_util/function/65760.cc            | 1 +
 libstdc++-v3/testsuite/20_util/function/69222.cc            | 1 +
 libstdc++-v3/testsuite/20_util/function/7.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/77322.cc            | 1 +
 libstdc++-v3/testsuite/20_util/function/8.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/9.cc                | 2 ++
 libstdc++-v3/testsuite/20_util/function/91456.cc            | 1 +
 libstdc++-v3/testsuite/20_util/function/assign/move.cc      | 1 +
 .../testsuite/20_util/function/assign/move_target.cc        | 1 +
 libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc      | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/55320.cc       | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/57465.cc       | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/70692.cc       | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/72820.cc       | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/addressof.cc   | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/callable.cc    | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/deduction.cc   | 1 +
 .../testsuite/20_util/function/cons/deduction_c++23.cc      | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc     | 2 ++
 libstdc++-v3/testsuite/20_util/function/cons/move.cc        | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/move_target.cc | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc    | 2 ++
 .../20_util/function/cons/non_copyconstructible.cc          | 1 +
 libstdc++-v3/testsuite/20_util/function/cons/refqual.cc     | 1 +
 .../testsuite/20_util/function/invoke/forwarding.cc         | 1 +
 libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc | 1 +
 .../testsuite/20_util/function/null_pointer_comparisons.cc  | 1 +
 .../20_util/function/requirements/explicit_instantiation.cc | 1 +
 libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc   | 1 +
 libstdc++-v3/testsuite/20_util/function_objects/83607.cc    | 1 +
 .../testsuite/20_util/function_objects/mem_fn/adl.cc        | 1 +
 .../testsuite/20_util/headers/cstdlib/functions_std.cc      | 1 +
 .../testsuite/20_util/headers/functional/types_std_c++0x.cc | 1 +
 .../testsuite/20_util/headers/memory/types_std_c++0x.cc     | 1 +
 libstdc++-v3/testsuite/20_util/is_function/35637.cc         | 1 +
 libstdc++-v3/testsuite/20_util/move/1.cc                    | 1 +
 libstdc++-v3/testsuite/20_util/move_only_function/call.cc   | 1 +
 libstdc++-v3/testsuite/20_util/move_only_function/cons.cc   | 1 +
 libstdc++-v3/testsuite/20_util/move_only_function/move.cc   | 1 +
 .../testsuite/20_util/move_only_function/version.cc         | 1 +
 libstdc++-v3/testsuite/20_util/owner_less/cmp.cc            | 1 +
 libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc       | 1 +
 libstdc++-v3/testsuite/20_util/owner_less/void.cc           | 1 +
 libstdc++-v3/testsuite/20_util/pointer_safety/1.cc          | 1 +
 libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc    | 2 ++
 .../testsuite/20_util/scoped_allocator/69293_neg.cc         | 2 ++
 .../testsuite/20_util/scoped_allocator/construct_pair.cc    | 1 +
 libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc   | 2 ++
 .../scoped_allocator/requirements/explicit_instantiation.cc | 2 ++
 libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc  | 1 +
 .../testsuite/20_util/shared_ptr/assign/auto_ptr.cc         | 1 +
 .../testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc     | 1 +
 .../testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc  | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc   | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc    | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc  | 1 +
 .../testsuite/20_util/shared_ptr/assign/shared_ptr.cc       | 1 +
 .../testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc   | 1 +
 .../20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc      | 1 +
 .../20_util/shared_ptr/assign/unique_ptr_rvalue.cc          | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc       | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc       | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc        | 1 +
 .../testsuite/20_util/shared_ptr/casts/reinterpret.cc       | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc     | 1 +
 .../testsuite/20_util/shared_ptr/comparison/42925.cc        | 1 +
 .../testsuite/20_util/shared_ptr/comparison/86537.cc        | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc | 1 +
 .../testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc    | 1 +
 .../testsuite/20_util/shared_ptr/comparison/dr1401.cc       | 1 +
 .../testsuite/20_util/shared_ptr/comparison/less.cc         | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc     | 1 +
 .../testsuite/20_util/shared_ptr/cons/alias-rval.cc         | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc  | 1 +
 .../testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc       | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc      | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc   | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc   | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc   | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc      | 1 +
 .../20_util/shared_ptr/cons/noexcept_move_construct.cc      | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc   | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc   | 1 +
 .../testsuite/20_util/shared_ptr/cons/unique_ptr.cc         | 1 +
 .../testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc   | 1 +
 .../testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc | 1 +
 .../20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc     | 1 +
 .../20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc  | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc  | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc | 1 +
 .../testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc  | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc | 1 +
 .../testsuite/20_util/shared_ptr/creation/92878_92947.cc    | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc  | 1 +
 .../testsuite/20_util/shared_ptr/creation/no_rtti.cc        | 1 +
 .../testsuite/20_util/shared_ptr/creation/overwrite.cc      | 1 +
 .../testsuite/20_util/shared_ptr/creation/private.cc        | 1 +
 .../20_util/shared_ptr/creation/single_allocation.cc        | 1 +
 .../shared_ptr/creation/single_allocation_no_rtti.cc        | 1 +
 .../testsuite/20_util/shared_ptr/creation/version.cc        | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc      | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc         | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc     | 1 +
 .../testsuite/20_util/shared_ptr/misc/get_deleter.cc        | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc      | 1 +
 .../testsuite/20_util/shared_ptr/modifiers/reset.cc         | 1 +
 .../testsuite/20_util/shared_ptr/modifiers/reset_neg.cc     | 1 +
 .../testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc  | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc | 1 +
 .../testsuite/20_util/shared_ptr/modifiers/swap_neg.cc      | 1 +
 .../testsuite/20_util/shared_ptr/observers/array.cc         | 1 +
 .../testsuite/20_util/shared_ptr/observers/bool_conv.cc     | 1 +
 libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc  | 1 +
 .../testsuite/20_util/shared_ptr/observers/owner_before.cc  | 1 +
 .../testsuite/20_util/shared_ptr/observers/unique.cc        | 1 +
 .../testsuite/20_util/shared_ptr/observers/use_count.cc     | 1 +
 .../shared_ptr/requirements/explicit_instantiation/1.cc     | 1 +
 .../shared_ptr/requirements/explicit_instantiation/2.cc     | 1 +
 .../testsuite/20_util/shared_ptr/requirements/weak_type.cc  | 1 +
 .../20_util/specialized_algorithms/construct_at/95788.cc    | 2 ++
 libstdc++-v3/testsuite/20_util/temporary_buffer.cc          | 2 ++
 libstdc++-v3/testsuite/20_util/tuple/48476.cc               | 1 +
 libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc          | 2 ++
 libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc          | 2 ++
 .../testsuite/20_util/tuple/cons/allocator_with_any.cc      | 2 ++
 libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc     | 2 ++
 .../20_util/tuple/cons/constexpr_allocator_arg_t.cc         | 2 ++
 .../testsuite/20_util/tuple/cons/explicit_construct.cc      | 2 ++
 libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc             | 2 ++
 .../testsuite/20_util/unique_ptr/creation/92878_92947.cc    | 1 +
 libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc | 1 +
 .../testsuite/20_util/unique_ptr/creation/array_neg.cc      | 1 +
 .../testsuite/20_util/unique_ptr/creation/constexpr.cc      | 1 +
 .../testsuite/20_util/unique_ptr/creation/for_overwrite.cc  | 1 +
 .../20_util/unique_ptr/creation/for_overwrite__neg.cc       | 1 +
 .../testsuite/20_util/unique_ptr/creation/single.cc         | 1 +
 libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc  | 2 ++
 .../testsuite/20_util/uses_allocator/92878_92947.cc         | 1 +
 .../20_util/uses_allocator/uninitialized_construct.cc       | 2 ++
 .../testsuite/20_util/weak_ptr/comparison/cmp_neg.cc        | 1 +
 libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc   | 1 +
 .../20_util/weak_ptr/cons/noexcept_move_construct.cc        | 1 +
 libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc           | 1 +
 .../testsuite/20_util/weak_ptr/observers/owner_before.cc    | 1 +
 .../weak_ptr/requirements/explicit_instantiation/1.cc       | 1 +
 .../weak_ptr/requirements/explicit_instantiation/2.cc       | 1 +
 libstdc++-v3/testsuite/21_strings/basic_string/version.cc   | 1 +
 .../basic_string_view/operations/contains/char/2.cc         | 1 +
 libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc   | 1 +
 .../21_strings/char_traits/requirements/version.cc          | 1 +
 .../testsuite/23_containers/vector/requirements/version.cc  | 1 +
 .../back_insert_iterator/requirements/base_classes.cc       | 2 ++
 .../front_insert_iterator/requirements/base_classes.cc      | 2 ++
 .../insert_iterator/requirements/base_classes.cc            | 2 ++
 .../istream_iterator/requirements/base_classes.cc           | 2 ++
 .../testsuite/24_iterators/istreambuf_iterator/92285.cc     | 2 ++
 .../24_iterators/istreambuf_iterator/cons/sentinel.cc       | 1 +
 .../istreambuf_iterator/requirements/base_classes.cc        | 2 ++
 .../24_iterators/istreambuf_iterator/requirements/dr445.cc  | 1 +
 .../ostream_iterator/requirements/base_classes.cc           | 2 ++
 .../ostreambuf_iterator/requirements/base_classes.cc        | 2 ++
 libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc     | 1 +
 libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc   | 1 +
 .../25_algorithms/headers/cstdlib/functions_std.cc          | 1 +
 libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc     | 3 +++
 .../25_algorithms/lexicographical_compare/constrained.cc    | 1 +
 libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc   | 1 +
 libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc | 1 +
 libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc    | 1 +
 .../testsuite/25_algorithms/random_shuffle/moveable.cc      | 1 +
 .../random_shuffle/requirements/explicit_instantiation/2.cc | 1 +
 libstdc++-v3/testsuite/25_algorithms/sort/35588.cc          | 3 +++
 libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc  | 3 +++
 .../testsuite/25_algorithms/stable_partition/constrained.cc | 3 +++
 .../testsuite/25_algorithms/stable_partition/mem_check.cc   | 3 +++
 .../testsuite/25_algorithms/stable_partition/moveable.cc    | 3 +++
 .../requirements/explicit_instantiation/2.cc                | 1 +
 .../requirements/explicit_instantiation/pod.cc              | 3 +++
 libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc       | 3 +++
 libstdc++-v3/testsuite/26_numerics/complex/2.cc             | 1 +
 libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc | 2 ++
 libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc  | 3 +++
 libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc | 1 +
 .../testsuite/26_numerics/headers/cstdlib/dr2192.cc         | 2 ++
 .../testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc     | 3 +++
 .../testsuite/26_numerics/headers/cstdlib/dr2735.cc         | 1 +
 .../testsuite/26_numerics/headers/cstdlib/functions_std.cc  | 3 +++
 .../testsuite/26_numerics/headers/cstdlib/macros.cc         | 3 +++
 .../testsuite/26_numerics/headers/cstdlib/types_std.cc      | 3 +++
 .../26_numerics/headers/cstdlib/types_std_c++0x.cc          | 3 +++
 libstdc++-v3/testsuite/26_numerics/lerp/version.cc          | 1 +
 libstdc++-v3/testsuite/26_numerics/midpoint/version.cc      | 1 +
 libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc             | 1 +
 libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc          | 1 +
 libstdc++-v3/testsuite/27_io/fpos/14320-1.cc                | 1 +
 libstdc++-v3/testsuite/27_io/fpos/14320-2.cc                | 2 ++
 libstdc++-v3/testsuite/27_io/fpos/14320-3.cc                | 2 ++
 libstdc++-v3/testsuite/27_io/fpos/14320-4.cc                | 2 ++
 libstdc++-v3/testsuite/27_io/spanstream/version.cc          | 1 +
 libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc         | 4 ++++
 libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc | 3 +++
 libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc   | 1 +
 .../testsuite/29_atomics/atomic/wait_notify/102994.cc       | 1 +
 libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc   | 1 +
 .../testsuite/29_atomics/headers/stdatomic.h/version.cc     | 3 +++
 libstdc++-v3/testsuite/30_threads/barrier/2.cc              | 1 +
 .../30_threads/condition_variable_any/stop_token/2.cc       | 1 +
 libstdc++-v3/testsuite/30_threads/jthread/version.cc        | 1 +
 libstdc++-v3/testsuite/30_threads/latch/2.cc                | 1 +
 libstdc++-v3/testsuite/30_threads/semaphore/2.cc            | 1 +
 libstdc++-v3/testsuite/30_threads/stop_token/2.cc           | 1 +
 libstdc++-v3/testsuite/abi/pr42230.cc                       | 1 +
 libstdc++-v3/testsuite/ext/shared_ptr/1.cc                  | 1 +
 .../testsuite/std/ranges/adaptors/lazy_split_neg.cc         | 1 +
 libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc         | 2 ++
 libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc       | 1 +
 libstdc++-v3/testsuite/std/ranges/p2325.cc                  | 1 +
 290 files changed, 391 insertions(+), 10 deletions(-)

diff --git a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
index ec81da13131..dac92e6cf88 100644
--- a/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
+++ b/libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-D_GLIBCXX_NO_ASSERT" }
+// { dg-require-effective-target hosted }
 // NB: This is done to force any generated and possibly included PCH
 // to be invalid, and also to remove cassert from the include set.
 
diff --git a/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc b/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
index 1997ad05704..be4fda37b65 100644
--- a/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
+++ b/libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++17 } }
 // { dg-require-cstdint "" }
+// { dg-require-effective-target hosted }
 
 #include <cstdlib>
 #include <cstdint>
diff --git a/libstdc++-v3/testsuite/18_support/new_nothrow.cc b/libstdc++-v3/testsuite/18_support/new_nothrow.cc
index b0ef4e966b8..d5e7eb58782 100644
--- a/libstdc++-v3/testsuite/18_support/new_nothrow.cc
+++ b/libstdc++-v3/testsuite/18_support/new_nothrow.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-require-effective-target hosted }
 
 #include <new>
 #include <stdlib.h>
diff --git a/libstdc++-v3/testsuite/20_util/allocator/105975.cc b/libstdc++-v3/testsuite/20_util/allocator/105975.cc
index 4342aeade04..09f27ba86e3 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/105975.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/105975.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 
 // PR libstdc++/105957
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/14176.cc b/libstdc++-v3/testsuite/20_util/allocator/14176.cc
index 137d33f7217..5ec6df8c0a9 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/14176.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/14176.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 20.4.1.1 allocator members
 
 #include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/allocator/64135.cc b/libstdc++-v3/testsuite/20_util/allocator/64135.cc
index b0a49e9b3f0..686fab35f9f 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/64135.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/64135.cc
@@ -1,5 +1,6 @@
 // { dg-do compile { target std_allocator_new } }
 // { dg-add-options no_pch }
+// { dg-require-effective-target hosted }
 
 // PR libstdc++/64135
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/89510.cc b/libstdc++-v3/testsuite/20_util/allocator/89510.cc
index b149b2eca09..65ae30de9a0 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/89510.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/89510.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc b/libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
index 001c66f5ce4..3fa1a797d02 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <new>
diff --git a/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc b/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
index 6f8d8982877..607c5978145 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
@@ -18,6 +18,7 @@
 // { dg-options "-faligned-new" }
 // { dg-do run { target { c++11 && { c++17 || std_allocator_new } } } }
 // { dg-require-cstdint "" }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <cstddef>
diff --git a/libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc b/libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
index 17c4c48cdf8..3253050faed 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc b/libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
index c34b4a4a443..fea32ccb3f2 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
@@ -15,8 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++2a" }
-// { dg-do compile { target c++2a } }
+// { dg-options "-std=gnu++20" }
+// { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
index 18d6607eabe..ff0f44cd84f 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
index b99102a478f..d7b16667bfb 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc b/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
index 3edefa139b7..8bbd353bc93 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
@@ -15,8 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++2a" }
-// { dg-do compile { target c++2a } }
+// { dg-options "-std=gnu++20" }
+// { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator/void.cc b/libstdc++-v3/testsuite/20_util/allocator/void.cc
index 5cdf0be012c..ffb26c5885a 100644
--- a/libstdc++-v3/testsuite/20_util/allocator/void.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator/void.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
index a630470833b..0f3dcef3c42 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
@@ -15,8 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++2a" }
-// { dg-do compile { target c++2a } }
+// { dg-options "-std=gnu++20" }
+// { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
index dd1d3c899ad..2e901b1bf1c 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
@@ -15,8 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// { dg-options "-std=gnu++2a" }
-// { dg-do compile { target c++2a } }
+// { dg-options "-std=gnu++20" }
+// { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
index 7716fee1b39..4f56a7b3487 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
@@ -1,5 +1,7 @@
-// { dg-options "-std=gnu++2a" }
-// { dg-do run { target c++2a } }
+// { dg-options "-std=gnu++20" }
+// { dg-do run { target c++20 } }
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
index 6cbcfb96810..edc67d3c3c9 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
index d11eb91572e..a8ba365e84c 100644
--- a/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
+++ b/libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc b/libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
index b34ae8ddf56..0b27d23030b 100644
--- a/libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
+++ b/libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2007-05-29 Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/bind/42593.cc b/libstdc++-v3/testsuite/20_util/bind/42593.cc
index f59c8f5bbcd..15c4af9ef79 100644
--- a/libstdc++-v3/testsuite/20_util/bind/42593.cc
+++ b/libstdc++-v3/testsuite/20_util/bind/42593.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc b/libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc
index dfba27ed3af..b70ee583267 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 23.3.5.2 bitset members
 
 #include <bitset>
diff --git a/libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc b/libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc
index 8384eb96d25..037a2ef00ee 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 23.3.5.2 bitset members
 
 #include <bitset>
diff --git a/libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc b/libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc
index 18fc0772d1c..8672ee7b542 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc
@@ -19,6 +19,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc
index ffccdd2df8a..b2c21a88aea 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <debug/bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
index 2371bef09cc..e3551effeef 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2010-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc b/libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
index f1f9d876c2e..b510da81281 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/debug/invalidation/1.cc b/libstdc++-v3/testsuite/20_util/bitset/debug/invalidation/1.cc
index 5d0e3c15171..64295c7037a 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/debug/invalidation/1.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/debug/invalidation/1.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <debug/bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc b/libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc
index 392470084ae..efe01d602ac 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc b/libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc
index c38ccc3911d..f691f7adda3 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <debug/bitset>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc b/libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc
index b1f729d70f3..6dc71ce26ff 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc
@@ -18,6 +18,8 @@
 // { dg-options "-std=gnu++2a -pedantic" }
 // { dg-do compile { target c++2a } }
 
+// { dg-require-effective-target hosted }
+
 #include <debug/bitset>
 
 bool
diff --git a/libstdc++-v3/testsuite/20_util/bitset/version.cc b/libstdc++-v3/testsuite/20_util/bitset/version.cc
index 7197b1ed956..791ec43bf2d 100644
--- a/libstdc++-v3/testsuite/20_util/bitset/version.cc
+++ b/libstdc++-v3/testsuite/20_util/bitset/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do preprocess { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
index c36b81b0e23..6577660e4dc 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
index e957eb24ee5..7b21a2f918a 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-O1" }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // PR middle-end/89303
 
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
index 87d13805f28..719c248975c 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
index 2130b36c081..6843cd54608 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
index c2c46b34c90..caf4141f124 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
index 19c92d9b7ca..c267d80833e 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
index 216048d7ee7..cf6bb8b6dea 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
index 6429f259553..28d5a57530c 100644
--- a/libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/forward/1.cc b/libstdc++-v3/testsuite/20_util/forward/1.cc
index 7d27cba2317..37b29c13a4a 100644
--- a/libstdc++-v3/testsuite/20_util/forward/1.cc
+++ b/libstdc++-v3/testsuite/20_util/forward/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2007-07-10  Paolo Carlini  <pcarlini@suse.de>
 //
diff --git a/libstdc++-v3/testsuite/20_util/forward/1_neg.cc b/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
index c483e3674d0..54e1a6a6e28 100644
--- a/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/forward/1_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2007-07-10  Paolo Carlini  <pcarlini@suse.de>
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/1.cc b/libstdc++-v3/testsuite/20_util/function/1.cc
index 152b21f6517..a0c0c580626 100644
--- a/libstdc++-v3/testsuite/20_util/function/1.cc
+++ b/libstdc++-v3/testsuite/20_util/function/1.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/10.cc b/libstdc++-v3/testsuite/20_util/function/10.cc
index c217012d24e..3353644e756 100644
--- a/libstdc++-v3/testsuite/20_util/function/10.cc
+++ b/libstdc++-v3/testsuite/20_util/function/10.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 //
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/2.cc b/libstdc++-v3/testsuite/20_util/function/2.cc
index 278dc89736c..d601ca8e617 100644
--- a/libstdc++-v3/testsuite/20_util/function/2.cc
+++ b/libstdc++-v3/testsuite/20_util/function/2.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/3.cc b/libstdc++-v3/testsuite/20_util/function/3.cc
index 62578565978..634eb2f5ebf 100644
--- a/libstdc++-v3/testsuite/20_util/function/3.cc
+++ b/libstdc++-v3/testsuite/20_util/function/3.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/4.cc b/libstdc++-v3/testsuite/20_util/function/4.cc
index e2c098c1552..8d67ab6cb85 100644
--- a/libstdc++-v3/testsuite/20_util/function/4.cc
+++ b/libstdc++-v3/testsuite/20_util/function/4.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/43397.cc b/libstdc++-v3/testsuite/20_util/function/43397.cc
index b60066995ef..11e3f5931c1 100644
--- a/libstdc++-v3/testsuite/20_util/function/43397.cc
+++ b/libstdc++-v3/testsuite/20_util/function/43397.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/20_util/function/48541.cc b/libstdc++-v3/testsuite/20_util/function/48541.cc
index 3558c1d9970..8469832a4ea 100644
--- a/libstdc++-v3/testsuite/20_util/function/48541.cc
+++ b/libstdc++-v3/testsuite/20_util/function/48541.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/20_util/function/5.cc b/libstdc++-v3/testsuite/20_util/function/5.cc
index ccd4c327585..63f68123ee1 100644
--- a/libstdc++-v3/testsuite/20_util/function/5.cc
+++ b/libstdc++-v3/testsuite/20_util/function/5.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/58569.cc b/libstdc++-v3/testsuite/20_util/function/58569.cc
index f2b320ff2b3..b1064003d69 100644
--- a/libstdc++-v3/testsuite/20_util/function/58569.cc
+++ b/libstdc++-v3/testsuite/20_util/function/58569.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/20_util/function/6.cc b/libstdc++-v3/testsuite/20_util/function/6.cc
index 3eb9ef86b25..6ed84abd1d6 100644
--- a/libstdc++-v3/testsuite/20_util/function/6.cc
+++ b/libstdc++-v3/testsuite/20_util/function/6.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/60594.cc b/libstdc++-v3/testsuite/20_util/function/60594.cc
index 0a6e7586071..f0fb077a06d 100644
--- a/libstdc++-v3/testsuite/20_util/function/60594.cc
+++ b/libstdc++-v3/testsuite/20_util/function/60594.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/65760.cc b/libstdc++-v3/testsuite/20_util/function/65760.cc
index ad59c23aa95..db3607e35da 100644
--- a/libstdc++-v3/testsuite/20_util/function/65760.cc
+++ b/libstdc++-v3/testsuite/20_util/function/65760.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // libstdc++/65760
 // c.f. https://gcc.gnu.org/ml/libstdc++/2015-04/msg00116.html
diff --git a/libstdc++-v3/testsuite/20_util/function/69222.cc b/libstdc++-v3/testsuite/20_util/function/69222.cc
index daf6bd0d768..12fd82d208e 100644
--- a/libstdc++-v3/testsuite/20_util/function/69222.cc
+++ b/libstdc++-v3/testsuite/20_util/function/69222.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/7.cc b/libstdc++-v3/testsuite/20_util/function/7.cc
index 533232f3729..39849045ce1 100644
--- a/libstdc++-v3/testsuite/20_util/function/7.cc
+++ b/libstdc++-v3/testsuite/20_util/function/7.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/77322.cc b/libstdc++-v3/testsuite/20_util/function/77322.cc
index ac286faf355..5e0f4076e60 100644
--- a/libstdc++-v3/testsuite/20_util/function/77322.cc
+++ b/libstdc++-v3/testsuite/20_util/function/77322.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/8.cc b/libstdc++-v3/testsuite/20_util/function/8.cc
index bd94e78de24..de609d9cdd4 100644
--- a/libstdc++-v3/testsuite/20_util/function/8.cc
+++ b/libstdc++-v3/testsuite/20_util/function/8.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/9.cc b/libstdc++-v3/testsuite/20_util/function/9.cc
index 0a1f627e459..7a58655a621 100644
--- a/libstdc++-v3/testsuite/20_util/function/9.cc
+++ b/libstdc++-v3/testsuite/20_util/function/9.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
 //
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/20_util/function/91456.cc b/libstdc++-v3/testsuite/20_util/function/91456.cc
index 081bf20e2cf..8fa53338738 100644
--- a/libstdc++-v3/testsuite/20_util/function/91456.cc
+++ b/libstdc++-v3/testsuite/20_util/function/91456.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 // PR 91456
 // std::function and std::is_invocable_r do not understand guaranteed elision
diff --git a/libstdc++-v3/testsuite/20_util/function/assign/move.cc b/libstdc++-v3/testsuite/20_util/function/assign/move.cc
index 38b82bef042..f57cba57801 100644
--- a/libstdc++-v3/testsuite/20_util/function/assign/move.cc
+++ b/libstdc++-v3/testsuite/20_util/function/assign/move.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/assign/move_target.cc b/libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
index e1753bdc3fb..7a13a20b3f2 100644
--- a/libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
+++ b/libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc b/libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
index e2e87d9c8f1..edbb3b5dbb1 100644
--- a/libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/55320.cc b/libstdc++-v3/testsuite/20_util/function/cons/55320.cc
index 762df45e3cd..f8ee56fd446 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/55320.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/55320.cc
@@ -18,6 +18,7 @@
 // libstdc++/55320
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/57465.cc b/libstdc++-v3/testsuite/20_util/function/cons/57465.cc
index ebc6eb5e1c5..89471449a57 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/57465.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/57465.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/70692.cc b/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
index 7cdc472497e..f9e8fe31570 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/70692.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 // PR libstdc++/70692
 // No warning when function<const int&(...)> binds a reference to a temporary
 #include <functional>
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/72820.cc b/libstdc++-v3/testsuite/20_util/function/cons/72820.cc
index a89bcca5327..681f29c2404 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/72820.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/72820.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/addressof.cc b/libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
index a22fc8c2bb8..402e902e608 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/callable.cc b/libstdc++-v3/testsuite/20_util/function/cons/callable.cc
index fc0402affe9..836fe2823cb 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/callable.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/callable.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
index 5fd9e652db2..ceb628f1dd9 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/deduction_c++23.cc b/libstdc++-v3/testsuite/20_util/function/cons/deduction_c++23.cc
index 17454ea4108..856e0b845b8 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/deduction_c++23.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/deduction_c++23.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc b/libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc
index a606104c841..3817090c3ac 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
+
 #include <functional>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/move.cc b/libstdc++-v3/testsuite/20_util/function/cons/move.cc
index cab6bfc76d4..3b3fccdd795 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/move.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/move.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/move_target.cc b/libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
index 2cfdfe1fb93..a2ea946de6b 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc b/libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc
index 635719874fb..59f20ba9843 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
+
 #include <functional>
 
 struct X
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc b/libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
index c27a19c86f5..d02e80f4e39 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc b/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
index da2f2d2ffa4..74c3d8b1988 100644
--- a/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
+++ b/libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc b/libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
index 23b17d93e4c..f9f8c92e787 100644
--- a/libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
+++ b/libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc b/libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
index e31c50428cc..f8c26c26a74 100644
--- a/libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
+++ b/libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc b/libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
index d17932ef93e..3ad45e02c30 100644
--- a/libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
+++ b/libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
index 9f3ebd2e819..84552d16a89 100644
--- a/libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc b/libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
index de20e3bbdc7..4fee448e186 100644
--- a/libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
+++ b/libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
@@ -1,5 +1,6 @@
 // { dg-options "-fno-rtti" }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/83607.cc b/libstdc++-v3/testsuite/20_util/function_objects/83607.cc
index b5a30047925..05d506b86a7 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/83607.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/83607.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <cstddef>
diff --git a/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc b/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
index a80775f2f18..fdc94408f86 100644
--- a/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
+++ b/libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc b/libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
index 88b00c1e0ff..785e6594537 100644
--- a/libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
+++ b/libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc b/libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
index 422c8f6159f..c615c213075 100644
--- a/libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc b/libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
index 6fe32685e81..697f03f95d6 100644
--- a/libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/is_function/35637.cc b/libstdc++-v3/testsuite/20_util/is_function/35637.cc
index 0a6ecfe57ce..ae13315bfb8 100644
--- a/libstdc++-v3/testsuite/20_util/is_function/35637.cc
+++ b/libstdc++-v3/testsuite/20_util/is_function/35637.cc
@@ -1,5 +1,6 @@
 // { dg-options "-pedantic-errors" }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/move/1.cc b/libstdc++-v3/testsuite/20_util/move/1.cc
index fdc7c225d82..7ecc87c285e 100644
--- a/libstdc++-v3/testsuite/20_util/move/1.cc
+++ b/libstdc++-v3/testsuite/20_util/move/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2007-07-10  Paolo Carlini  <pcarlini@suse.de>
 //
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/call.cc b/libstdc++-v3/testsuite/20_util/move_only_function/call.cc
index 9ca0a60a24e..68aa20568eb 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/call.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/call.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do run { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc b/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
index d8a0a4ab2b0..44e9681b694 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/move.cc b/libstdc++-v3/testsuite/20_util/move_only_function/move.cc
index f1f0fb597e5..0bed6edbf1a 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/move.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/move.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do run { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/move_only_function/version.cc b/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
index 9fe52f46123..f33b82f8ca7 100644
--- a/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
+++ b/libstdc++-v3/testsuite/20_util/move_only_function/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc b/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
index e240b3290e8..13db8252c38 100644
--- a/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
+++ b/libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc b/libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
index 63ff479f484..136c2e9fc94 100644
--- a/libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
+++ b/libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/owner_less/void.cc b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
index afd7a67c7fc..7bfdfbbaeb7 100644
--- a/libstdc++-v3/testsuite/20_util/owner_less/void.cc
+++ b/libstdc++-v3/testsuite/20_util/owner_less/void.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/pointer_safety/1.cc b/libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
index f0a9e22b343..e3ee05a5bcc 100644
--- a/libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
+++ b/libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target { c++11 && { ! c++23 } } } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc b/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
index 23ae0341aad..6534c53727d 100644
--- a/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
+++ b/libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator use
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <type_traits>
diff --git a/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc b/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
index 2ae023a0eb9..09c132f645f 100644
--- a/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator use
+// { dg-require-effective-target hosted }
 
 // PR libstdc++/69293
 
diff --git a/libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc b/libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
index 72789affd82..ee7b33fa09e 100644
--- a/libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
+++ b/libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <utility>
 #include <tuple>
diff --git a/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc b/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
index 6c32bf9f8f5..b56237f05c5 100644
--- a/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
+++ b/libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator use
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <scoped_allocator>
diff --git a/libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
index 08f94608e96..e1a4665d799 100644
--- a/libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
+++ b/libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator use
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
index 9f2d66a8d7d..61470438a31 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
index f819afa7f70..c1bfe0a7e3c 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
index 9f431cdc985..7b83ce8fc62 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
index ced8a67a142..bc54025b5ff 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
index 6e172049130..a65e9b43cc5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2006-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
index 510eead88ec..8da2f14f759 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
index 5f8ef79d441..80419c04a75 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
index 9b190cc93b0..f9878e0af05 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
index 5fdd8a850ae..23fed1c8f95 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
index 0cc6fe37b34..beed140719c 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
index 40cffc4aeb2..b5807d8e177 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
index 358dbe8b577..041710f5a3d 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++11 } }
 // { dg-require-gthreads "" }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
index 307ddd958a5..954582a0eb5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-do run { target c++11 } }
 // { dg-require-gthreads "" }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
index a4fd959137f..556b2508578 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2006-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
index e1662476a47..f3fd49502a4 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2016-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
index 0178245c046..ba2b9c14e00 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2019-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
index 9ebd02c1e8d..5e3978e47c3 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
index 79019d9e686..f247e636eb0 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
index 8faa9eb5998..4a2f41d94a5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
index 406d3a82c77..89598eda6d3 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
index bde69aeacde..6f165d067d4 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
index 5061e995cc9..bd9e9d8efff 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
index 666564a1f67..c8f816bed84 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
index bce7e331dc1..2c78e879805 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
index fdd0ec5645e..92a479d7aab 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
index d16cf40f116..7cc00c9bbd5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
index 88cc02cd16c..9ebd25a615d 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
index cf80f031c1d..00d75f58277 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
index 9467ffe1764..35a88fc35f0 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
index 4998bbd34f9..ee33865bdb9 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
index c2e568eeaf7..0183c561b9a 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2014-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
index 09c99d1d8e3..9169285176a 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
index a1221a3fa65..e666caa3f1f 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
index 0186a84f31e..2ae5038b0a7 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2019-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
index 9e5da172475..e7273b753b8 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
index d69d90bd71d..5a4d68cc7ce 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2016-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
index f8e69206805..79d74dcba0f 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
index 3a33e6ca3c1..19bb8e7e27b 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
index fe5427c4ca6..2a6d43c2f32 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
index 98428b4b8c4..51744013ba7 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
index b23c8f4f42e..c1670acdb56 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
index 30c7cbf8eff..4f2a2f694e5 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
index d6ec7b1d057..6607867f635 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
index 15fae50bc7b..03de2b0e762 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
index 3339da12fdb..76bc8103501 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
index 3dc16f51e80..8f6796b9eec 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
index ee50648ef64..c4ffcff2788 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
index 518e0f52e3e..bc416ca7db8 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
index a50c3059386..11a0967faa6 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
index 1ebec84246c..ed448f147da 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
index 4d727df733a..7c266eb29ee 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
index 5ef21fe7154..94fc2d230bc 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
index b6e4eb0a952..1852f01e606 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
index 5a9b462af74..e6e225ee135 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
index 84049f409a0..bcc90136dab 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
index 077d981f301..0bac6e16f8f 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
@@ -1,5 +1,6 @@
 // { dg-options "-fno-rtti" }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2014-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
index 9bee1daabfc..454e7a622ad 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
index aa4a0ba9418..1b45609dbb3 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
index c5a34ab9deb..c7298dfcbb8 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
index 67069a1ec10..df482ba6894 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target { c++11 } } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
index 50c4bd62b59..c3da8cfe653 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
index f20a7101458..6092cc99399 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated" }
 // { dg-add-options using-deprecated }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2010-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
index e34b87baf72..968be24ff18 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
index 611e6cebdd5..71e6aeb0074 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
@@ -1,5 +1,6 @@
 // { dg-options "-fno-rtti" }
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2014-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
index f207fdee097..923e909805a 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20 -fno-lifetime-dse -O0" }
 // { dg-do run { target c++20 } }
+// { dg-require-effective-target hosted }
 
 // C++20 20.11.3.7 shared_ptr Creation [util.smartptr.shared.create]
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
index b55cd107e78..7332df30f7b 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
index e73a1f5a093..14dd010c96c 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
index 68328bb37d4..08b8f5ad826 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-fno-rtti" }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
index 0e47f19061d..4dd1b4964a4 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do preprocess { target c++20 } }
+// { dg-require-effective-target hosted }
 
 // C++20 20.11.3.7 shared_ptr Creation [util.smartptr.shared.create]
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
index fb6abdbff00..322fad903a9 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
index 53b9146e944..bf3024e79af 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2010-06-11  Paolo Carlini  <paolo.carlini@oracle.com>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
index b77b505f2ff..921eec3ce74 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
index 7b431be8aa4..744ce12fa41 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
@@ -1,5 +1,6 @@
 // { dg-options "-fno-rtti" }
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
index 1aab13f819c..4789cf3257b 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
index bb1da527bbb..ca871041fac 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
index 9762ffea987..06184f1f066 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
index bf75591c926..870526b8d4d 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
index 9aa3550d804..b7b2e2e5d28 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
index ad8b1c3dbd1..ebea40a3bc0 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
index c7363dbe1b4..fa50049341d 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
index 6093652cb78..a655372b489 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2016-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
index 99c38cc4940..54a1b3f763d 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
index 161ffea76d4..59a99a21a71 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
index 651e7a87d19..7c4d0ea9204 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
index 8b3e7a01b1a..083c6540369 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
index 044cf0d679d..f4e82af86b4 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2005-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
index b226b318898..48563aeafcf 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2006-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
index cc67b555468..fa6b7f31b94 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
index 6c4e4b1c760..48efae21acf 100644
--- a/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
+++ b/libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc b/libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
index 5f70b6cc514..8fd7acc60b3 100644
--- a/libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
+++ b/libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
@@ -17,6 +17,8 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc b/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
index 54b0edb00ee..3d414adb76e 100644
--- a/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
+++ b/libstdc++-v3/testsuite/20_util/temporary_buffer.cc
@@ -19,6 +19,8 @@
 
 // 20.4.3 temporary buffers
 
+// { dg-require-effective-target hosted }
+
 #include <memory>
 #include <testsuite_hooks.h>
 
diff --git a/libstdc++-v3/testsuite/20_util/tuple/48476.cc b/libstdc++-v3/testsuite/20_util/tuple/48476.cc
index 32ece32f513..ec312470ab1 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/48476.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/48476.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
index 274cc3a558c..38615d85aea 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 #include <tuple>
 #include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
index 6441f8d5ba0..7b4916bae14 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 #include <tuple>
 #include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
index 0fa1ad76c23..7924a9226db 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++14 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2016-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
index 74c1d68accf..9d2d9094d5e 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
@@ -1,4 +1,6 @@
 // { dg-do run { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
index 24be893c642..c49c9ffaafa 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
@@ -1,5 +1,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 //
 // Copyright (C) 2019-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc b/libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
index c0ea6f8d197..998dd75fcda 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
@@ -1,4 +1,6 @@
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2015-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc b/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
index 80fc23cf9d4..04ac27358eb 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
@@ -1,6 +1,8 @@
 // Verify P2321R2 "zip" enhancements to std::tuple.
 // { dg-options "-std=gnu++23" }
 // { dg-do run { target c++23 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 #include <tuple>
 #include <memory>
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
index b850d24e8d0..40c8f5703ba 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
index b18fafc43fc..3e840520e51 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
index 1ab36a537cb..6fcf8c205cf 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc
index 90d11198578..f673342cb16 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
index f736c762a43..65b5758b2ab 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
@@ -1,6 +1,7 @@
 // { dg-options "-std=gnu++20 -fno-lifetime-dse -O0" }
 // { dg-do run { target c++2a } }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
index 654855822c0..5fbed70c69c 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
index 9d7108d83b5..a53efe0f9f8 100644
--- a/libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
+++ b/libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2013-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc b/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
index 8a41e4ea654..9c4ea3e0ac3 100644
--- a/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// FIXME [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 // PR libstdc++/69293
 
diff --git a/libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc b/libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
index ca7d1119ee5..73c5b7beada 100644
--- a/libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
+++ b/libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc b/libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
index f403cbe99cc..06e850f4997 100644
--- a/libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
@@ -1,5 +1,7 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do compile { target c++20 } }
+// TODO [!HOSTED]: avoidable std::allocator usage
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
index a729847c96c..bc41f001728 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
index b9902763ebd..03f2a44b9eb 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
index 0ee3efcb2bc..c3ba8926569 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // 2011-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
 //
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
index 92250a19991..20e0503e27e 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
@@ -23,6 +23,7 @@
 #include <testsuite_tr1.h>
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 int main()
 {
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
index 723f0b4da73..6008dca5233 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2008-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
index 0d8165a34f5..19c97565d71 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2006-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc b/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
index 461415e8bae..df1cdb3a9a3 100644
--- a/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
+++ b/libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
index a99bb179a93..865b17905ff 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
index c106a553f40..3501006150b 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2021-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc b/libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
index 7710ee61657..1d10d019824 100644
--- a/libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
+++ b/libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++98" }
 // { dg-do compile { target *-*-linux-gnu } }
+// { dg-require-effective-target hosted }
 
 #include <cstdlib>
 
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
index 6f571f48010..908163a2635 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
index c85e060f048..4c69d145dc5 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do preprocess { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
index 3a3208ab485..241ab21142b 100644
--- a/libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-06-21  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
index 7fd4932947a..f7fa5b17ca3 100644
--- a/libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-06-21  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
index eafb6b24f99..7270ce0fac3 100644
--- a/libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-06-21  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
index a3d39528382..283ffaf4500 100644
--- a/libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-06-25  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
index 07f46a99ed3..f4167b604dd 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 #include <iterator>
 #include <iostream>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
index 17c826ee305..1cf8e6df4c2 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
index 3540362d56e..a6625b4a8dd 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 1999-06-28 bkoz
 
 // Copyright (C) 1999-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
index 4193ccd4e12..5f3df97c4be 100644
--- a/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
+++ b/libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2011-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
index a979ac9f95f..f32de1efe97 100644
--- a/libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-06-25  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc b/libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
index c7cfd805a84..27aacc85b8d 100644
--- a/libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
+++ b/libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
@@ -1,4 +1,6 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
+
 // 2001-04-30  Benjamin Kosnik  <bkoz@redhat.com>
 
 // Copyright (C) 2001-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc b/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
index 5f11d90d29c..edaaf717726 100644
--- a/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
index cab35525c2d..33571fe6a9c 100644
--- a/libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <algorithm>
 #include <functional>
diff --git a/libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc b/libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
index b698eab3e1f..02d92785892 100644
--- a/libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc b/libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
index e518f5703da..a6cbc1abe0f 100644
--- a/libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
@@ -17,6 +17,9 @@
 
 // 25.3.4 [lib.alg.merge]
 
+// <testsuite_new_operators.h> requires malloc/free.
+// { dg-require-effective-target hosted }
+
 #include <algorithm>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
index ef904e65d68..02ce4e30f6a 100644
--- a/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <algorithm>
 #include <functional>
diff --git a/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc b/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
index bd115469eb0..d0d8882ab92 100644
--- a/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <functional>
 #include <algorithm>
diff --git a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
index 2e85b92e364..1a5724edb46 100644
--- a/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do preprocess { target c++17 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
index fd1f5eb0717..8c2450d8783 100644
--- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-add-options using-deprecated }
+// { dg-require-effective-target hosted }
 
 // 25.2.11 random_shuffle()
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
index d72906828d0..82389984e79 100644
--- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-add-options using-deprecated }
+// { dg-require-effective-target hosted }
 
 // Copyright (C) 2009-2022 Free Software Foundation, Inc.
 //
diff --git a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
index b3c7f0c01f0..63701d9d7cd 100644
--- a/libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
@@ -1,6 +1,7 @@
 // { dg-options "-Wno-deprecated-declarations" }
 // { dg-do compile }
 // { dg-add-options using-deprecated }
+// { dg-require-effective-target hosted }
 
 // 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/sort/35588.cc b/libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
index a3176bca207..40579c5ef20 100644
--- a/libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
@@ -15,6 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// Transitively includes string related bits.
+// { dg-require-effective-target hosted }
+
 #include <algorithm>
 #include <functional>
 #include <tr1/functional>
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
index 6c089e472ae..afa525a0763 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
@@ -17,6 +17,9 @@
 
 // 25.2.12 [lib.alg.partitions] Partitions.
 
+// std::stable_partition is not freestanding.
+// { dg-require-effective-target hosted }
+
 #include <algorithm>
 #include <functional>
 #include <testsuite_new_operators.h>
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
index c4c1d5360ec..bec0a8a6559 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
@@ -18,6 +18,9 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do run { target c++2a } }
 
+// std::stable_partition is not freestanding.
+// { dg-require-effective-target hosted }
+
 #include <algorithm>
 #include <testsuite_hooks.h>
 #include <testsuite_iterators.h>
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
index 2e21e35e23c..8c44acc67d2 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
@@ -15,6 +15,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// std::stable_partition is not freestanding.
+// { dg-require-effective-target hosted }
+
 // 25.2.12 [lib.alg.partitions] Partitions.
 
 #include <algorithm>
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
index 9747092929e..02792a3a87b 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
@@ -17,6 +17,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// std::stable_partition is not freestanding.
+// { dg-require-effective-target hosted }
+
 // 25.2.12 [lib.alg.partitions] Partitions.
 
 #include <algorithm>
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
index f2e4419f2ff..75d14b8f710 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
@@ -1,5 +1,6 @@
 // { dg-options "-Wno-deprecated-declarations" }
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 // 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
 
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc b/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
index e4e098001de..3326b17a76d 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
@@ -1,6 +1,9 @@
 // { dg-options "-Wno-deprecated-declarations" }
 // { dg-do compile }
 
+// std::stable_partition is not freestanding.
+// { dg-require-effective-target hosted }
+
 // 2007-09-20 Benjamin Kosnik <bkoz@redhat.com>
 
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
diff --git a/libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc b/libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
index f9042eecfd5..8f712bfa2a1 100644
--- a/libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
@@ -17,6 +17,9 @@
 
 // 25.3.1.2 [lib.stable.sort]
 
+// testsuite_new_operators.h requires malloc/free.
+// { dg-require-effective-target hosted }
+
 #include <algorithm>
 #include <testsuite_new_operators.h>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/26_numerics/complex/2.cc b/libstdc++-v3/testsuite/26_numerics/complex/2.cc
index ff76a40ec0f..fed1d90ad2a 100644
--- a/libstdc++-v3/testsuite/26_numerics/complex/2.cc
+++ b/libstdc++-v3/testsuite/26_numerics/complex/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do preprocess { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
index 21116484783..4410aeac8ea 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
@@ -15,6 +15,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
 
 #include <cstdlib>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
index 8dd5b879a31..f140c315ef7 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
@@ -17,6 +17,9 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // 17.4.1.2 Headers, cstdlib
 
 #include <cstdlib>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
index 5de912caae9..fe9bc8eb206 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// { dg-require-effective-target hosted }
 
 // PR libstdc++/60401
 
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
index a7a5efa0ec2..6e93f085d4c 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
@@ -16,6 +16,8 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile { target c++11 } }
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
 
 // NB: Don't include any other headers in this file.
 // LWG 2192 requires <cstdlib> to declare overloads for floating point types.
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
index 02f234ad8f4..e7058620671 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
@@ -17,6 +17,9 @@
 
 // { dg-do compile { target c++11 } }
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // NB: Don't include any other headers in this file.
 // LWG 2192 requires abs to be ill-formed for unsigned arguments.
 #include <cstdlib>
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
index fb1c002e433..93e9784049a 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 // NB: Don't include any other headers in this file.
 // LWG 2735. std::abs(short), std::abs(signed char) and others should return
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
index af28adf0b76..35b389d3297 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
@@ -1,5 +1,8 @@
 // { dg-do compile }
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
index b4e2cd467de..a6c18544cc6 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
@@ -1,5 +1,8 @@
 // { dg-do compile }
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
index 6992a2b9190..bd1f5b468cb 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
@@ -1,5 +1,8 @@
 // { dg-do compile }
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
index e4db20dea8c..904d404efa8 100644
--- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
+++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
@@ -1,5 +1,8 @@
 // { dg-do compile { target c++11 } }
 
+// Math-related cstdlib bits are not freestanding.
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2007-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/26_numerics/lerp/version.cc b/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
index 3ccb032bc67..c19ead7586d 100644
--- a/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do preprocess { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc b/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
index 3ccb032bc67..c19ead7586d 100644
--- a/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
+++ b/libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do preprocess { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc b/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
index ef390a62e74..b88969f1548 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc b/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
index ef390a62e74..b88969f1548 100644
--- a/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-effective-target cxx11_abi }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
index 661489806f8..17cfbd1bd50 100644
--- a/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
@@ -20,6 +20,7 @@
 // 27.4.3 fpos
 
 // { dg-do compile }
+// { dg-require-effective-target hosted }
 
 #include <limits>
 #include <iterator>
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
index c3a150e25a8..924809ce789 100644
--- a/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 27.4.3 fpos
 
 #include <iterator>
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
index 00c812d01c9..3dc2bfdfe5a 100644
--- a/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 27.4.3 fpos
 
 #include <iterator>
diff --git a/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc b/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
index df847622eb2..c920f72f4f1 100644
--- a/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
+++ b/libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
@@ -17,6 +17,8 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
+// { dg-require-effective-target hosted }
+
 // 27.4.3 fpos
 
 #include <iterator>
diff --git a/libstdc++-v3/testsuite/27_io/spanstream/version.cc b/libstdc++-v3/testsuite/27_io/spanstream/version.cc
index 62617550493..26077c94630 100644
--- a/libstdc++-v3/testsuite/27_io/spanstream/version.cc
+++ b/libstdc++-v3/testsuite/27_io/spanstream/version.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do compile { target c++23 } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc b/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
index d2ff6cf9fe3..ba289e197dc 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
@@ -1,4 +1,8 @@
 // { dg-do compile { target c++11 } }
+
+// std::shared_ptr is not freestanding.
+// { dg-require-effective-target hosted }
+
 // DR 3220. P0558 broke conforming C++14 uses of atomic shared_ptr
 
 #include <atomic>
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc b/libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
index 61b0a54e2e1..2e6037fd723 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
@@ -1,6 +1,9 @@
 // { dg-do run { target c++11 } }
 // { dg-require-atomic-builtins "" }
 
+// std::abs from <cstdlib> is not freestanding.
+// { dg-require-effective-target hosted }
+
 // Copyright (C) 2012-2022 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
index 9d22835a9ca..db12f685808 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-effective-target gthreads }
+// { dg-require-effective-target hosted }
 
 #include <atomic>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc
index f572ce7ef11..72d9a924ea1 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc
@@ -1,6 +1,7 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do compile { target c++20 } }
 // { dg-require-gthreads "" }
+// { dg-require-effective-target hosted }
 
 #include <atomic>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
index 88a779c3ada..9eacc91e501 100644
--- a/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
+++ b/libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-effective-target gthreads }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
index dbaf6bc59d3..ab74fe60934 100644
--- a/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
+++ b/libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
@@ -1,6 +1,9 @@
 // { dg-options "-std=gnu++23" }
 // { dg-do preprocess { target c++23 } }
 
+// <stdatomic.h> is not freestanding.
+// { dg-require-effective-target hosted }
+
 #include <version>
 
 #ifndef __cpp_lib_stdatomic_h
diff --git a/libstdc++-v3/testsuite/30_threads/barrier/2.cc b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
index ef4049a7402..313a5677635 100644
--- a/libstdc++-v3/testsuite/30_threads/barrier/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/barrier/2.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-effective-target gthreads }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
index 231b0e83d93..3c7ff40914f 100644
--- a/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/jthread/version.cc b/libstdc++-v3/testsuite/30_threads/jthread/version.cc
index e17031b47d3..06210358aad 100644
--- a/libstdc++-v3/testsuite/30_threads/jthread/version.cc
+++ b/libstdc++-v3/testsuite/30_threads/jthread/version.cc
@@ -18,6 +18,7 @@
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
 // { dg-require-gthreads "" }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/latch/2.cc b/libstdc++-v3/testsuite/30_threads/latch/2.cc
index ac7fce0f3f8..27a591fe7c4 100644
--- a/libstdc++-v3/testsuite/30_threads/latch/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/latch/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
index ab89ecd4ffe..41a042f2936 100644
--- a/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/semaphore/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/30_threads/stop_token/2.cc b/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
index 231b0e83d93..3c7ff40914f 100644
--- a/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
+++ b/libstdc++-v3/testsuite/30_threads/stop_token/2.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <version>
 
diff --git a/libstdc++-v3/testsuite/abi/pr42230.cc b/libstdc++-v3/testsuite/abi/pr42230.cc
index 48156e4ba18..e10803c6040 100644
--- a/libstdc++-v3/testsuite/abi/pr42230.cc
+++ b/libstdc++-v3/testsuite/abi/pr42230.cc
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-require-effective-target hosted }
 
 #include <cxxabi.h>
 #include <cassert>
diff --git a/libstdc++-v3/testsuite/ext/shared_ptr/1.cc b/libstdc++-v3/testsuite/ext/shared_ptr/1.cc
index 4ea932b05e1..45723fb5d6e 100644
--- a/libstdc++-v3/testsuite/ext/shared_ptr/1.cc
+++ b/libstdc++-v3/testsuite/ext/shared_ptr/1.cc
@@ -16,6 +16,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do run { target c++11 } }
+// { dg-require-effective-target hosted }
 
 #include <memory>
 #include <testsuite_hooks.h>
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
index bbc77707e06..a9c95981493 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <algorithm>
 #include <ranges>
diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc
index 3e51aa01796..a1e66738789 100644
--- a/libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc
+++ b/libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc
@@ -1,8 +1,10 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do run { target c++20 } }
+// { dg-require-effective-target hosted }
 
 #include <algorithm>
 #include <ranges>
+#include <string_view>
 #include <testsuite_hooks.h>
 
 // Verify P1739R4 (and LWG 3407) changes to views::take/drop/counted.
diff --git a/libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc b/libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
index a6c73813804..435c6098bc2 100644
--- a/libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
+++ b/libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
@@ -17,6 +17,7 @@
 
 // { dg-options "-std=gnu++2a" }
 // { dg-do compile { target c++2a } }
+// { dg-require-effective-target hosted }
 
 #include <sstream>
 #include <ranges>
diff --git a/libstdc++-v3/testsuite/std/ranges/p2325.cc b/libstdc++-v3/testsuite/std/ranges/p2325.cc
index d2ebe9af863..accd2655b95 100644
--- a/libstdc++-v3/testsuite/std/ranges/p2325.cc
+++ b/libstdc++-v3/testsuite/std/ranges/p2325.cc
@@ -1,5 +1,6 @@
 // { dg-options "-std=gnu++20" }
 // { dg-do compile { target c++20 } }
+// { dg-require-effective-target hosted }
 // P2325R3 "Views should not be required to be default constructible"
 
 #include <ranges>
-- 
2.37.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 00/10] c-family,libstdc++: P1642 and related changes
  2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
                   ` (9 preceding siblings ...)
  2022-09-30 16:45 ` [PATCH 10/10] libstdc++: Disable hosted-only tests [PR103626] Arsen Arsenović
@ 2022-09-30 18:15 ` Jonathan Wakely
  2022-10-03 14:49   ` Jonathan Wakely
  10 siblings, 1 reply; 13+ messages in thread
From: Jonathan Wakely @ 2022-09-30 18:15 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, libstdc++

On Fri, 30 Sept 2022 at 17:46, Arsen Arsenović via Libstdc++
<libstdc++@gcc.gnu.org> wrote:
>
> Hi,
>
> This patchset:
> - Implements the P1642 WG21 paper, with a fair few extensions,
> - Fixes libstdc++' build system on systems --without-headers,
> - Ports (a large chunk of) the libstdc++ testsuite to freestanding, and
> - Changes the semantics of `int main' in freestanding (!!).

Thanks for all this work, Arsen!

I'm testing these and will approve and commit all except [PATCH 5/10]
which is outside libstdc++ and needs review.


>
> Thanks,
>
> Arsen Arsenović (7):
>   libstdc++: Filter out unconditional <stdio.h> default include
>   libstdc++: Mark headers that must be hosted as such [PR103626]
>   c-family: Implement new `int main' semantics in freestanding
>   libstdc++: Rework how freestanding install works [PR106953]
>   libstdc++: Make some tests work on freestanding [PR103626]
>   libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626]
>   libstdc++: Disable hosted-only tests [PR103626]
>
> Jonathan Wakely (3):
>   libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626]
>   libstdc++: Adjust precompiled headers for freestanding
>   libstdc++: Add effective-target 'hosted' for testsuite [PR103626]
>
>  gcc/c-family/c-common.cc                      |   6 +
>  gcc/c-family/c-common.h                       |  10 +
>  gcc/c/c-decl.cc                               |   4 +-
>  gcc/c/c-objc-common.cc                        |   9 +-
>  gcc/cp/cp-tree.h                              |  12 +-
>  gcc/doc/invoke.texi                           |  20 +-
>  .../freestanding-main-implicitly-returns.C    |   5 +
>  gcc/testsuite/g++.dg/no-builtin-main.C        |   5 +
>  gcc/testsuite/gcc.dg/c11-noreturn-4.c         |   2 +-
>  .../freestanding-main-implicitly-returns.c    |   5 +
>  gcc/testsuite/gcc.dg/inline-10.c              |   2 +-
>  gcc/testsuite/gcc.dg/no-builtin-main.c        |   5 +
>  gcc/testsuite/gcc.dg/noreturn-4.c             |   2 +-


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 00/10] c-family,libstdc++: P1642 and related changes
  2022-09-30 18:15 ` [PATCH 00/10] c-family,libstdc++: P1642 and related changes Jonathan Wakely
@ 2022-10-03 14:49   ` Jonathan Wakely
  0 siblings, 0 replies; 13+ messages in thread
From: Jonathan Wakely @ 2022-10-03 14:49 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, libstdc++

On Fri, 30 Sept 2022 at 19:15, Jonathan Wakely wrote:
>
> On Fri, 30 Sept 2022 at 17:46, Arsen Arsenović via Libstdc++
> <libstdc++@gcc.gnu.org> wrote:
> >
> > Hi,
> >
> > This patchset:
> > - Implements the P1642 WG21 paper, with a fair few extensions,
> > - Fixes libstdc++' build system on systems --without-headers,
> > - Ports (a large chunk of) the libstdc++ testsuite to freestanding, and
> > - Changes the semantics of `int main' in freestanding (!!).
>
> Thanks for all this work, Arsen!
>
> I'm testing these and will approve and commit all except [PATCH 5/10]
> which is outside libstdc++ and needs review.

All the libstdc++ changes are on trunk now. I can push the c-family
one for you if it gets approved.


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2022-10-03 14:49 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-30 16:45 [PATCH 00/10] c-family,libstdc++: P1642 and related changes Arsen Arsenović
2022-09-30 16:45 ` [PATCH 01/10] libstdc++: Make _GLIBCXX_HOSTED respect -ffreestanding [PR103626] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 02/10] libstdc++: Filter out unconditional <stdio.h> default include Arsen Arsenović
2022-09-30 16:45 ` [PATCH 03/10] libstdc++: Adjust precompiled headers for freestanding Arsen Arsenović
2022-09-30 16:45 ` [PATCH 04/10] libstdc++: Mark headers that must be hosted as such [PR103626] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 05/10] c-family: Implement new `int main' semantics in freestanding Arsen Arsenović
2022-09-30 16:45 ` [PATCH 06/10] libstdc++: Rework how freestanding install works [PR106953] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 07/10] libstdc++: Make some tests work on freestanding [PR103626] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 08/10] libstdc++: Add effective-target 'hosted' for testsuite [PR103626] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 09/10] libstdc++: Re-enable std::hash<std::bitset> in freestanding [PR103626] Arsen Arsenović
2022-09-30 16:45 ` [PATCH 10/10] libstdc++: Disable hosted-only tests [PR103626] Arsen Arsenović
2022-09-30 18:15 ` [PATCH 00/10] c-family,libstdc++: P1642 and related changes Jonathan Wakely
2022-10-03 14:49   ` Jonathan Wakely

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).