public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-23 11:46 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-23 11:46 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:c01660880fd2aad0ee14dcfe45d1a10414d5e2ac

commit c01660880fd2aad0ee14dcfe45d1a10414d5e2ac
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Nov 14 22:16:27 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index e27e0fa606c..ff6603cbbd9 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2712,6 +2712,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 4b647d6a88e..924ba22abcf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-19  4:44 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-19  4:44 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:e1357d7b9682f04ff27906e9d0a11026a55382d8

commit e1357d7b9682f04ff27906e9d0a11026a55382d8
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Nov 14 22:16:27 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index eaa75f00f5c..1d317882e58 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 43a040e135c..240a3815d38 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-15  2:26 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-15  2:26 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:eb5dfb598008847f9669ce6aa53a5bee14f1f83b

commit eb5dfb598008847f9669ce6aa53a5bee14f1f83b
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Nov 14 22:16:27 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index eaa75f00f5c..1d317882e58 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 43a040e135c..240a3815d38 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-09  1:58 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-09  1:58 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:9c38504019d5a0bd65b24c8d7bccf170d63da3e3

commit 9c38504019d5a0bd65b24c8d7bccf170d63da3e3
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 51ca735ebeb..b3d70acf9c9 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 6ef53e07a45..979e6c85cf0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-08 23:48 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-08 23:48 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:723bc7e7fa03ba5da4d2b8a3cd7b1c6a96267686

commit 723bc7e7fa03ba5da4d2b8a3cd7b1c6a96267686
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 51ca735ebeb..b3d70acf9c9 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 6ef53e07a45..979e6c85cf0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-08 19:22 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-08 19:22 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:8bbf50ae98e4908ca2927be7c13d9dfe49f1acd4

commit 8bbf50ae98e4908ca2927be7c13d9dfe49f1acd4
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 51ca735ebeb..b3d70acf9c9 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 6ef53e07a45..979e6c85cf0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-07 11:33 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-07 11:33 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6a23acd77a758892607d5d7e0a3f57d063e44c8d

commit 6a23acd77a758892607d5d7e0a3f57d063e44c8d
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 51ca735ebeb..b3d70acf9c9 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2703,6 +2703,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..ed14b9da7aa 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..9d4f827c439 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 6ef53e07a45..979e6c85cf0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-06 18:06 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-06 18:06 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:9ba374cbfc23fbecbb58c808d76d33bb7ad80efe

commit 9ba374cbfc23fbecbb58c808d76d33bb7ad80efe
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C:
            Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C:
            Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C:
            Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C:
            Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C:
            Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c20af31c642..5cd53d7b56d 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2700,6 +2700,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..10709e2ab01 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */ */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..6b4137a0c4b 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */ */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 50e8004f13b..ddc19185dec 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-06  6:32 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-06  6:32 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6a9dc4173ad25f016d1782e34f4ea3ca930b7da7

commit 6a9dc4173ad25f016d1782e34f4ea3ca930b7da7
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C: Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C: Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C: Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c20af31c642..5cd53d7b56d 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2700,6 +2700,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da..ca93f414304 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547b..0c7c134d262 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6..ba2ac652449 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888..c2be18ae15e 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee8..793ff6693db 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539..8b0dee762e8 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8..0ffd30c8a01 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d35..35911c6e5e2 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c..7f6759e5421 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb..8b2f7218d1e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e..ae6845a3c48 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f531612..6d06403a5c9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e1..eb4b54dee4b 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7..f37d3d390ff 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e..9920b5ccb09 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742b..f27eb4365d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9..33ef2dd8bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a3559..c085852a3f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5..b2364e4db7d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef8..f058938ee8f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f829107..5255d2b83c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 12923282796..38f9e64d5d8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97..2b4acdf2bac 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff9..fc78c33b8c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff..461fb6fff93 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f9..ff312f988fc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3..f658123aaa5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3c..76751015026 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb..567444880bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e947..3a509bc26f5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded..1cf9293ecf0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73..5f36159c718 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406..f8eb084b57f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7b..4ac76baf9d3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479e..8f3733f4281 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d..46b02db2812 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98..4b293de6976 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df..7e371c30267 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875d..6154953ffdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f0..d538bd4a7ed 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa1..27704017383 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4..2a8f65a9979 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2..1676ea458a7 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967..1e39c242772 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d36..0de587e8606 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b2..df71f924c5f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a93..0157097f3ba 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b..2d46ce59603 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a15544..5efa4c0b58f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e50..d75640fbdcf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e2..d3231e50c33 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf1..ecd854a4dc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d39..42622fd2e18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433e..0828f8274b3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5..12cc8e4353c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a1..9f0228e098c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a99594..5ffd3a427c1 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251..5bc9103897c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d1..435190eca7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d11299..4a35c1c55f6 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb..53d02a4c4e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b973..9cb59dbc194 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a..f77a915af74 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2b..61424aee99b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee0078..38fb5c80b07 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7..9776ec57911 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa165..e94bf7d9752 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509e..ba663ec1544 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d2..55f52bf4e86 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c..03da6c30923 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b1..01db4d21424 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480..cd3da6426e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529..fcea6f9975f 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f..2ab457abd94 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7ae..0992924b434 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d0..72ba97c5ac4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4..0e7c8555fc9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43d..61e19bd0727 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd91..3ae446fecf6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116..a6b48729a56 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe68..f86bbc78871 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a52..29ba751d427 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a45..322cde107a6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa..f42c96af282 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830..bce831e98b7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4..b9398e858c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f..02ad0faa8c0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a74558..e91f068efd2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac06..9c776289b99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3..1f7e2a63f95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0ee..33dde7914e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758..86d946c7b35 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c..0f09162ae7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3..070a05ac178 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f..74f1a10c1fb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2c..3fb8167115b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f90481..e3f6ee436cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313..33716288c2e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b..4cb8eb7ea4e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1e..27358cb9510 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421..a3efa473b69 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef..fc4ce7c62d3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3cc..3e4fe3662f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b..1ff4eb09e20 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd..4b3e9334f3d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b..12e6c063777 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a43..3d133ce2aa9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a..e79d9da6b64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308..8be2597fffb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775d..5a7b9fd0761 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44ac..3c543602802 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa..1b7f09d93e5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef0..d4743e2a548 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050..beaf12f4782 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbe..dee0a99c4b3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912d..45ea0de7430 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e341574..08d17a5e889 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea..b4ee6acf06e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aa..016db878ad5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03..2f388b5f532 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea..871307d3b19 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7ae..928193ac843 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb6..dbf5c973fe3 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc..0a8b90063a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f28495..8eedbfac6f1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e98..c05806e31ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f63..98a822189a5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f448..90d99efdd34 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d80..f69a99a3f99 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b3..516b89bc6e1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe..f3aee497730 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821..3dfa6caa66e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae..81a7da276ac 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61..d7bd00e0242 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816d..6625e4476cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed200..3d88c37ed57 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f156..e1c5fba294d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d823..f21e3049573 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a07..005423fa69b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7..f4b1b9f55ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b..bf2f9101702 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d5..9cf148b7683 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae633955..ab392a2a105 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae..d2a82bf4410 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43ab..943c869a58b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c4..42480a03b88 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109f..e4303dab6a2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b..c28a641bc2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d47..7fb169a6c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bb..5459d2a4e49 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d..a9b99ca4939 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1a..6fc801ff299 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e40..a8189f4c40e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f7..b853d97bfef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1a..6953dcb46ed 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc782..03044ef4b31 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b226..20f407d30cc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d54..d852666925b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f..7b77cecec64 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89..925f1d0d585 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77a..20609ce831e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225d..9c8ddf2a992 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dba..ec8a9940d3a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca6..04dcfa26458 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd..c2f2e93dc66 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec..bc97507372c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a..bfce44f0c9e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82..ae7d9fa84c7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd84..a7fa4c7a21f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd..f6c44e9278d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563..cd35d978814 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae..90aa008227b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d48..f4209ab48d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b6467..b4c3f49bd59 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c87..e7a8491ab1a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac..462ab51a755 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8af..60852bb10a1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1ed..ada827e267d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d011674..5d40ed414c4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8f..deb5a2275dc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3..f1793b17624 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90..093d4f70b75 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4..910be6bdc7f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc..28ecb32e463 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9a..ebea8d3513b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00..3b9149ca17d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5e..baae030c97d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f485..504c8b99f8c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e..90b6395c793 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a..1b7f89f815d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be4..1d302c88226 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a2..fc914c63ced 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2..bfa3c9e542f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dc..bec6c7ba4c7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1a..53287b173e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655b..fd55e08ce5a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e91..e4bdfd1a3a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b390..126fc7f1b02 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f..e326942d9eb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc0092..391b7c47d50 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1..eba0e171cd6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea..2da89dcef79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1b..aaa01fb7035 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641..0e110c5c2cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d99..b9dcd391f89 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d441..85079123ccd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd516..9f7c7a860e8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a7..3668a77c114 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a5..e1c3dac26b6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456..9c639bf2ba1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe..26e681626e9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d375682..40170899aed 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad3..bfa04c41bdb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea..e934e33582d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f20644..2471adc6efb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f..a0f1a475444 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13..66d8218cea3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb58..c64e1800c3b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dc..b88b0eb6917 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b..5747766e8a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f..f4b1c8ee9c0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf2..f0cc3c6b0bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b..dbeaf2ca772 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3..985f50221d2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae73..96aabe554b8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd..c06a3e6078d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d..95d49271b81 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f..208aaeea55d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c9..27f7c990a12 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4e..28732d86212 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b42..a2e4e414319 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b43..9f57ac56596 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f9..1991de1150f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86..5a264c24833 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577f..c311cfb8db7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0b..e69dd5a4255 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714..78e2b26d3bb 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a35..8f3cc87825a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 15583199297..b5306b9962f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c..dd3b390ca63 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c387..1a5103ae36a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e39461..7a707100613 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b..651618e3fd1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736..203f80762b9 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ff..3cedd0d401f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534..a5d1e010f8d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd8..b463c900081 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff..66acfcc6db0 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324..def05f5fb25 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250..e73b86e4eb2 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b..723512f71f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b..7ccb01e3d4f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b..3fecda75e55 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd81..92a82fd322b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc..6a79ea239d6 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335c..c1e2be70840 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cda..0808bd6a231 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c0..f1cd1cc8b46 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6..babef5a25ec 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc66..c75e0169bea 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec..69bcd8f670e 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7e..6e0e8b561c9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744..1be2af75ef5 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707..ee5f4840143 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4a..95a4bea085b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1..90954003589 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e..d9698f8c182 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f29297..5bc97f63aff 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad..e92b02cd5e2 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976..1d496a10370 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4..eac6a245728 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af..df4a6f92166 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9..7864935cfc0 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8..e48d640a167 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773f..94cebb9cd2a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be..3cb525ec25c 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c7..865ca374311 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f..50e98fb831b 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c72..835276b2815 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac13793..4a816dacd0f 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26..c055c40bd49 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f4478181..85ac03e00c9 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca2..5cc5a8f7dc0 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb2185..dca2adbff52 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a308..e8f96cfd4e6 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c..f563410ae05 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c93220..8af385ce14b 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1..9a414b5732a 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded22..42fd664d91c 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd..9de34c76c1e 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f..4fd6e0c0144 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e..b53e289decf 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d81183..c7d0d3a5bd0 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672..59715ae87f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c..a167877e641 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09d..04cad04b291 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a..f4100817fce 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748..45f99e4fe4a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 79700441093..fb652e6e99e 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec8..ca198ed5ea6 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bf..58d63662720 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba..88255dc7888 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff6..ee23aaaae49 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c8..bf1ea0addaf 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a51..6a6a718a204 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446..021d2d72e1f 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1..dd879f708f5 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e..4ae89e43e38 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59..5f3615e9267 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ff..6bda8c2d1b1 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c2..75172d414f5 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cd..7204717e238 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f398285580..f06f53e3ca8 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e264379..3dd90bdafb9 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf..03c7dc0919e 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a..337c00ef145 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839..39035859c20 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8..54adaf411ab 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e561..b2ac4872274 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e..c6e8d6d0b36 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694b..f85d35c9697 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b287..def4eb920f6 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253..61ef9c0d33f 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e..0542b28dd45 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db684..14f4d17c6a3 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a02..8d90533b079 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044c..fbd5f5f0cec 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b7..4c6e2d266f7 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde60..02dabceb4cc 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a..40620bf695e 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a0..a1606bc3b62 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d13..eede1c1d9a6 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb1..10709e2ab01 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */ */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a37662..9085b2641d6 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d9039..ba9fed733ab 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc024..09b7adfa83c 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644e..4bbfaf4237c 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b..5a890ea6f92 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a0..781192dc3fe 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947..9fdcb0c46a4 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d35842..92f59996b94 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b..e5a75d396aa 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c2078..357bad83d3d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d8..d6858c2271d 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae8..70d92ea01ca 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca..ce13fd9238e 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd8..d8c323cde63 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce3..cdcea49e020 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf..250dcbad0c3 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f1..d066b11f916 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f39180..19219a1e266 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc..940c6da9576 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc..b64f5944b3c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d25..a52fefdae0a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b7..b7ff864ac13 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56..695fb279b4a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944..5a912b8fba1 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebf..eb1815c253b 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf64..663b3bada3d 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e..371995493b2 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b9..e6fe2d98d7f 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc6..e5b9f2ecf6c 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54..f69c56184a7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba99..9c42b7a38ce 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dc..2b0e91af52a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb..02a2a7e9a79 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294ad..f0c59902193 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b7430..057ba0fa91a 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d..41f1a208240 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db27..be30fcc1ffd 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037a..27004e06a68 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dc..84f6fffcad0 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b..9486d1506dd 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662..ccaa233ea1e 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f62..e4b7cf0b5c1 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } } */
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb7..3a8252adb9c 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300e..4f3c65bdd5c 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcef..385771154a8 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97..5c499a667fd 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd62..09cb2b38fbf 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab41523595..c49e8c44480 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff96..f9dd9fb97a8 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } } */
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c6926..fa0e2007f32 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a035984..7ea28b5b09d 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f..769c5d11716 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018ae..91693cfdbac 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df8..031b4fa58db 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a0..669f0b8e43c 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153c..93428a71ae6 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb..2ca1a700446 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc5..0269297ed57 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e6..4a1937eace6 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cc..92af1b957c1 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87..6a772342d0f 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0..fc84dab697a 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba..8c9189447ea 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } } */
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0b..49e75318470 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c..1cd69b90130 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711ae..1b39dfca12f 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe5438510..01eb86ca2a4 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b48..6dd94b25dee 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f1..fa96e309fec 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e9..65ee8ff8a33 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc..102c2bd896a 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96..4903dc308b7 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662b..7809c9733a3 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e..30522f99cc2 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1eb..cbed17e546a 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } } */
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b784..84d497a1c21 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c..1ace4d9f6b2 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } } */
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f..d822278df57 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e..0f4e1e6c151 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871..fbb74e7b559 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4b..36cc52e46fb 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a..5d1e275dfcb 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a3..c53189a28fd 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c..375654cd4e0 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb8..1fbb4f01cfe 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfe..57765dd8d8a 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee37..37b228eff9b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c9..ed4a603bf5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4..89abdd90a82 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d..8080e9fbfbd 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca..65ce086bfd5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035..08329144e8f 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad43..3a81c8d6364 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a..f7dd30ca311 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed..3e5484ec73d 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd971..5f0ca468564 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } } */
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e..c4dab1aa710 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb2..cd883f1b4f4 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfda..39d58e0da7b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4..f8babd362a5 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa..0dcc3fdd932 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0..269999a1f91 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b6..b2df01e7d51 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce63..cc92e6b66e3 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b..0343bcf226b 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee5..5e9da1e5bf1 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636..9d8958599ab 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a0..0b318a9da67 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d..1eb29e03088 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e36..9cb344cdac7 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } } */
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea61987705..6b4137a0c4b 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */ */
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b..51238dc6297 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f93..7666fa388ac 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da..65874be855d 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee30..41232c083c1 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098..fec23e62525 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb7..2a3dbcd97f9 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be..c162bdf4866 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c80..63a53b46ec0 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f5001..f9a7ad5b0f0 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9..1294e6c5870 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43..a6acd0aacf3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150..116d11827eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293b..ee7a1ffff46 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a9..bdcd1108ce1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f..fda212a12be 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd..0b3978161a6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fe..be46b71a9c7 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e..52531e6dc2c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d9..a33aa6c7592 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320..9b1da17e3df 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600..a43d179ae1b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd791421..72e04f1d26b 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12e..09fdc2e644e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f09..45b0e6e8b7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0..9eb3c92f408 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a..ea7191787be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1..6e8a467c945 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada44..7866296aa30 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3..c0e5efcacba 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d431524..dc3bc756968 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e8..aadded80a8d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f..d131a8c9ae0 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c..bc5bf77e0b5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f06..f12972743bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd7..e91045874e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f..9c6de0bfe50 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b58966..9f88a6e5785 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd969..77b000e31fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106..bf68a0f3d69 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833..7a4ad287907 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da..a42cf6aab98 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd5..fdac0ece2be 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4..577c52ca812 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26..dda42aafd08 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740..077d6b21e96 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be..a1a105ec81c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d1..ab5baf70c79 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c..4eb5615df73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8..9644c085fd1 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705..501855a4ba7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3..c926ef518d5 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d00..2088432494d 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d0068..91931b0769b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b51..db65523fbc7 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79..68a5fd85491 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b9..2c6d4590fc1 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca..170d7bc8b1a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e7598..1ef7d45807e 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad2..cb69cfaa0c8 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452..b1dcd189b75 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd7..0f52805478b 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8c..795aab90305 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a..7a3c465781b 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da1157..bb54b803390 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000..a2b9fd15026 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8a..5d37e94082f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a..d38f978975e 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac73..473a8f07872 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685..4a9499acd83 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c5..410351f11b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a90..d45a359c96c 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd..a16394fd481 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c..ecf2e1bbe2f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a..6beb513bba9 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf..c5ce84f5bff 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af8..e498c3b8396 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e..44e7eac7305 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed..a5dbfa4f8e5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe..fe44e06ce20 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867..728d9c209fb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a63..1cd9abbd2da 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2..c42f88a7964 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c5..51ffcbeedc4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3f..932f2491109 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cb..b432b2da6b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c83..c1d94498c72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf..0c615d49746 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3..0abbce2ed77 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae79..054e53179c4 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c99..7f93d76f54f 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e177..c1880c8571e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5..91e7e730a61 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0b..b22d482e2bf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16..49c90679da3 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad4900..005f9c9bc84 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b30082..0c5ebf9a902 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee..24aa24b037d 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad..47478413324 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0..37422fbd6ec 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7a..e4d16c7fb72 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478a..ca8fcc372b2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b8..7102504a1ae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6d..de8916770a5 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a..2486a0688bb 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d16..7fadf9a33a9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1..f81861ecade 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f..8f6094a1fb1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e..d9dc0a03548 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff53..83fa20db921 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c..6fcad362422 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab91..553fc539eaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e3067..9597d2e71fa 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd1..c31d4cfb75c 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 50e8004f13b..ddc19185dec 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-11-05  6:15 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-11-05  6:15 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:66d08bff1c4999b54fe746eceed6b4f9971487f0

commit 66d08bff1c4999b54fe746eceed6b4f9971487f0
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    Co-Authored-By: Olivier Hainque <hainque@adacore.com>
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C: Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C: Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C: Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c20af31c6423..5cd53d7b56de 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2700,6 +2700,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da0..ca93f4143046 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } } */
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547ba..0c7c134d262a 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6a..ba2ac652449d 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888a..c2be18ae15ec 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee88..793ff6693db3 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539d..8b0dee762e86 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8f..0ffd30c8a012 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d352..35911c6e5e20 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c0..7f6759e54215 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -107,6 +107,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function Base::b at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::b at .*.C:13: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb6..8b2f7218d1e2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e5..ae6845a3c48a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f5316121..6d06403a5c9f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e15..eb4b54dee4bc 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -24,6 +24,7 @@ int main(int, char **)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function main at .*:14: false(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function main at .*:15: false(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7e..f37d3d390ff6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -63,6 +63,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ffun at .*.C:15: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:38: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e3..9920b5ccb099 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -71,6 +71,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g0 at .*.C:5: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function g1 at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742bb..f27eb4365d8c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9a..33ef2dd8bc18 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -33,6 +33,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function fn0 at .*.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function fn2 at .*.C:19: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function X::fns0 at .*.C:9: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a35595..c085852a3f28 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5a..b2364e4db7de 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -16,4 +16,5 @@ int main(int, char **)
   ]];
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:8: x < 10 && y > 123.*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef80..f058938ee8fd 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f8291070..5255d2b83c32 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 129232827960..38f9e64d5d84 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97b..2b4acdf2bac9 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -140,6 +140,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {=================================(\n|\r\n|\r)} }
 // { dg-output {contract violation in function M::f<int> at .*:7: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff91..fc78c33b8c3a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -174,6 +174,7 @@ namespace nonnullary
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function nullary::fun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "fun::x: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function nullary::fun2 at .*.C:18: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff4..461fb6fff932 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -16,6 +16,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*\\.C:6: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*\\.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f98..ff312f988fc6 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -403,6 +403,7 @@ member::S member::T1::funend(int m, double n)
   return s;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:37:  .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function member::T1::vfun at .*.C:38:  .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3d..f658123aaa5e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
 // { dg-output "Base: 0(\n|\r\n|\r)" }
 // { dg-output "contract violation in function Base::f at .*.C:7: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3cd..767510150269 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -56,6 +56,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:8: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb0..567444880bc1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function ns0::f<int> at .*.C:13: .*(\n|\r\n|\r)" }
 // { dg-output "1(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ns0::ns1::f<int> at .*.C:28: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e9471..3a509bc26f5d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -108,6 +108,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S<int>::f at .*.C:14: .*(\n|\r\n|\r)" }
 // { dg-output "s_int.f.-10.: 10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S<int>::g at .*.C:10: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded6..1cf9293ecf02 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73c..5f36159c7188 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -33,6 +33,7 @@ int main(int, char **)
   printf("=====\n");
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function f at .*.C:10: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function f at .*.C:12: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406e..f8eb084b57fd 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -160,6 +160,7 @@ namespace nondefining
   }
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:25: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function defining::T1::vfun at .*.C:26: .*(\n|\r\n|\r)" }
 // { dg-output "vfun::x: 10(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7bb..4ac76baf9d34 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -77,6 +77,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::now at .*.C:9: .*(\n|\r\n|\r)" }
 // { dg-output "S::now: a: -10, t->pri: -10(\n|\r\n|\r)" }
 // { dg-output "contract violation in function now at .*.C:15: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479eb..8f3733f4281a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -94,6 +94,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function body<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "-2(\n|\r\n|\r)" }
 // { dg-output "contract violation in function body<double> at .*.C:16: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d3..46b02db28122 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -304,6 +304,7 @@ int main(int, char**)
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {contract violation in function body<int> at .*:9: a > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {-2(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98d..4b293de69762 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -32,6 +32,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {G5 full double double, f gen R(\n|\r\n|\r)} }
 // { dg-output {contract violation in function G5<int, double>::f<int> at .*:10: t > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df4..7e371c302672 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -62,6 +62,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:47: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:48: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:49: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875dd..6154953ffdbe 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts14.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts14.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f03..d538bd4a7edf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -48,6 +48,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 30 .*/contracts15.C(\n|\r\n|\r)" }
 // { dg-output "synth caught direct: -30(\n|\r\n|\r)" }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts15.C(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa15..277040173830 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -29,6 +29,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 18 .*/contracts16.C(\n|\r\n|\r)" }
 // { dg-output "synth caught indirect: -18(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4e..2a8f65a9979e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -30,6 +30,7 @@ int main(int, char**) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // { dg-output "custom std::handle_contract_violation called: 19 .*/contracts17.C(\n|\r\n|\r)" }
 // { dg-shouldfail "throwing in noexcept" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2d..1676ea458a70 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967e..1e39c2427729 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -14,6 +14,7 @@ int main()
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function main at .*.C:11: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function main at .*.C:12: .*(\n|\r\n|\r)" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d361..0de587e86063 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b25..df71f924c5f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a937..0157097f3ba5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b2..2d46ce59603c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -50,6 +50,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output "contract violation in function ffun at .*.C:12: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function ftfun<int> at .*.C:30: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function explicitfn at .*.C:36: .*(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a155440..5efa4c0b58f3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e506..d75640fbdcf5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -32,6 +32,7 @@ int main(int, char **) {
   return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "contract violation in function S::S<int> at .*.C:8: .*(\n|\r\n|\r)" }
 // { dg-output "S::S.T.: -1(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e26..d3231e50c332 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf19..ecd854a4dc68 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d390..42622fd2e186 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433ef..0828f8274b30 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5a..12cc8e4353c4 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -35,6 +35,7 @@ int main()
   // return 0;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 // { dg-output {contract violation in function fun1<int> at .*:12: \(long long\)b > 0(\n|\r\n|\r)} }
 // { dg-output {\[continue:on\](\n|\r\n|\r)} }
 // { dg-output {contract violation in function fun1<double> at .*:11: a > 0(\n|\r\n|\r)} }
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a14..9f0228e098cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a995949..5ffd3a427c10 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251c..5bc9103897cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d17..435190eca7dd 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d112995..4a35c1c55f6b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb3..53d02a4c4e03 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b9735..9cb59dbc1943 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a6..f77a915af745 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2bb..61424aee99bb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee00781..38fb5c80b072 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7f..9776ec57911e 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa1651..e94bf7d9752c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509ea..ba663ec1544c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d22..55f52bf4e863 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c0..03da6c309236 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b18..01db4d21424f 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480e..cd3da6426e23 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529a..fcea6f9975f8 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f5..2ab457abd94c 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7aeb..0992924b4343 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d00..72ba97c5ac47 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4b..0e7c8555fc95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43df..61e19bd07272 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd912..3ae446fecf6b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116f..a6b48729a56b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe687..f86bbc78871d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a522..29ba751d4272 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a456..322cde107a61 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa1..f42c96af2821 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830f..bce831e98b7e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4c..b9398e858c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f6..02ad0faa8c07 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a745586..e91f068efd2d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac061..9c776289b99e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3b..1f7e2a63f958 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0eed..33dde7914e2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758e..86d946c7b357 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c1..0f09162ae7d2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3d..070a05ac178e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f9..74f1a10c1fb0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2cd..3fb8167115bc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f904816..e3f6ee436cbe 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313f..33716288c2ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b6..4cb8eb7ea4e7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1ef..27358cb95109 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421e..a3efa473b698 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef8..fc4ce7c62d3e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3ccb..3e4fe3662f11 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b1..1ff4eb09e206 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd0..4b3e9334f3db 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b9..12e6c0637776 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a436..3d133ce2aa9f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a6..e79d9da6b64d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308a..8be2597fffbb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775da..5a7b9fd07616 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44acd..3c5436028023 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa4..1b7f09d93e5e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef06..d4743e2a548b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050e..beaf12f4782b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbed..dee0a99c4b3b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912de..45ea0de74301 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e3415746..08d17a5e8891 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea2..b4ee6acf06e6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aac..016db878ad51 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03b..2f388b5f5326 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea3..871307d3b194 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7aec..928193ac8437 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb61..dbf5c973fe32 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc5..0a8b90063a4c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f284958..8eedbfac6f17 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e980..c05806e31ef2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f632..98a822189a5f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f4482..90d99efdd34b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d800..f69a99a3f996 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b33..516b89bc6e17 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe8..f3aee4977309 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821f..3dfa6caa66ec 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae7..81a7da276ac6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61e..d7bd00e02423 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816dd..6625e4476cb9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed2008..3d88c37ed57f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f1567..e1c5fba294df 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d8236..f21e30495731 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a079..005423fa69b4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7b..f4b1b9f55ad8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b3..bf2f91017021 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d52..9cf148b76838 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae6339556..ab392a2a105f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae7..d2a82bf44103 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43abb..943c869a58b5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c42..42480a03b88c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109fc..e4303dab6a21 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b5..c28a641bc2ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d479..7fb169a6c7d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bba..5459d2a4e494 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d9..a9b99ca49393 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1ab..6fc801ff2993 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e401..a8189f4c40e8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f78..b853d97bfefb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1af..6953dcb46ed2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc7825..03044ef4b314 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b2260..20f407d30cce 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d546..d852666925b1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f5..7b77cecec645 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89d..925f1d0d5850 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77af..20609ce831e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225da..9c8ddf2a9925 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dbac..ec8a9940d3a9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca69..04dcfa26458f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd0..c2f2e93dc669 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec4..bc97507372ce 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a4..bfce44f0c9e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82b..ae7d9fa84c73 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd845..a7fa4c7a21fa 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd3..f6c44e9278de 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563c..cd35d978814c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae4..90aa008227bc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d483..f4209ab48d48 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b64673..b4c3f49bd59a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c873..e7a8491ab1a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac5..462ab51a755a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8aff..60852bb10a11 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1edd..ada827e267df 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d0116749..5d40ed414c4d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8ff..deb5a2275dc1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3d..f1793b17624f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90d..093d4f70b75e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4f..910be6bdc7f7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc0..28ecb32e463b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9aa..ebea8d3513b4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00e..3b9149ca17d9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5ed..baae030c97d0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f4859..504c8b99f8c8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e8..90b6395c7934 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a0..1b7f89f815d2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be45..1d302c88226b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a20..fc914c63ced8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2f..bfa3c9e542fc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dcb..bec6c7ba4c7d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1af..53287b173e8b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655bf..fd55e08ce5a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e912..e4bdfd1a3a25 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b3900..126fc7f1b027 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f8..e326942d9ebe 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc00923..391b7c47d503 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1f..eba0e171cd60 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea3..2da89dcef79f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1bf..aaa01fb70353 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641e..0e110c5c2cf6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d991..b9dcd391f89a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d4411..85079123ccdd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd5165..9f7c7a860e83 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a78..3668a77c1148 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a57..e1c3dac26b69 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456e..9c639bf2ba17 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe1..26e681626e90 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d3756826..40170899aed6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad37..bfa04c41bdb6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea9..e934e33582d1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f206446..2471adc6efbf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f0..a0f1a475444e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13e..66d8218cea3c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb589..c64e1800c3bd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dcb..b88b0eb6917b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b7..5747766e8a31 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f6..f4b1c8ee9c03 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf24..f0cc3c6b0bbc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b3..dbeaf2ca7725 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3b..985f50221d29 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae737..96aabe554b8a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd3..c06a3e6078d9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d1..95d49271b811 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f2..208aaeea55de 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c99..27f7c990a124 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4ef..28732d86212e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b429..a2e4e414319d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b434..9f57ac565968 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f97..1991de1150f9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86f..5a264c248330 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577fc..c311cfb8db76 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0bf..e69dd5a4255f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714a..78e2b26d3bb8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a356..8f3cc87825a4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 155831992977..b5306b9962fd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c9..dd3b390ca631 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c3878..1a5103ae36a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e394615..7a707100613b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b3..651618e3fd1e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736c..203f80762b9b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ffd..3cedd0d401fc 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534f..a5d1e010f8df 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd83..b463c9000812 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff0..66acfcc6db0d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324e..def05f5fb256 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250c..e73b86e4eb28 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b8..723512f71f5d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b1..7ccb01e3d4f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b9..8756ce4cf59f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd810..92a82fd322b4 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc1..6a79ea239d68 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335cb..c1e2be708404 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cdab..0808bd6a2312 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c09..f1cd1cc8b46d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6b..babef5a25ecd 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc664..c75e0169beab 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec1..69bcd8f670ea 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7ef..6e0e8b561c9f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744e..1be2af75ef59 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707d..ee5f4840143c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4ab..95a4bea085bd 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1e..909540035893 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e8..d9698f8c1821 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f292977..5bc97f63aff9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad7..e92b02cd5e2a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976c..1d496a10370d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4d..eac6a2457280 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af1..df4a6f92166c 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9c..7864935cfc0a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8b..e48d640a1679 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773fc..94cebb9cd2a4 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be1..3cb525ec25ce 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c72..865ca3743112 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f3..50e98fb831b2 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c725..835276b28150 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac137931..4a816dacd0fb 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26c..c055c40bd499 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f44781813..85ac03e00c95 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca25..b72df103462a 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb21855..dca2adbff524 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a3081..e8f96cfd4e60 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c9..f563410ae05c 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c932203..8af385ce14b9 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1a..9a414b5732aa 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded225..42fd664d91cf 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd6..9de34c76c1e9 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f3..4fd6e0c01449 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e3..b53e289decf7 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d811834..c7d0d3a5bd03 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672d..59715ae87f2a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c2..a167877e6419 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09da..04cad04b2918 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a1..f4100817fce1 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748f..45f99e4fe4ac 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 797004410937..fb652e6e99ec 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec80..ca198ed5ea69 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bfd..58d63662720c 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba5..88255dc78885 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff64..ee23aaaae492 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c85..bf1ea0addaf8 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a516..6a6a718a2046 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446f..021d2d72e1f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1d..dd879f708f50 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e9..4ae89e43e382 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59e..5f3615e92673 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ffe..6bda8c2d1b11 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c22..75172d414f5d 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cdd..7204717e2384 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f3982855809..f06f53e3ca88 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e2643793..3dd90bdafb90 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf3..03c7dc0919e4 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a1..337c00ef1455 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839f..39035859c205 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8f..54adaf411ab2 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e5614..b2ac48722744 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e2..c6e8d6d0b361 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694ba..f85d35c96971 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b2879..def4eb920f68 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253d..61ef9c0d33fa 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e6..0542b28dd456 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db6843..14f4d17c6a32 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a029..8d90533b0795 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044ca..ef1ce7bfbdd5 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b71..eeaeb6af6eaf 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde603..0e3259451eae 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a4..40620bf695ef 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a06..a1606bc3b627 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d132..eede1c1d9a6f 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb18..ed14b9da7aaf 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a376623..9085b2641d60 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d90392..ba9fed733ab9 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc0245..09b7adfa83ca 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644eb..4bbfaf4237cb 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b5..5a890ea6f92a 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a09..781192dc3fec 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -47,3 +47,4 @@ export int pre_print2(int n);
 export int fn3(int n)
   [[ pre: pre_print2(n) > 0 ]];
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947b..9fdcb0c46a4a 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -33,3 +33,4 @@ int fn3(int x)
   return x;
 }
 
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d358426..92f59996b940 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b6..e5a75d396aa7 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c20782..357bad83d3d9 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d88..d6858c2271dc 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae88..70d92ea01ca1 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca4..ce13fd9238eb 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd84..d8c323cde631 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce34..cdcea49e020e 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf6..250dcbad0c39 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f18..d066b11f9163 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f391805..19219a1e266d 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc4..940c6da9576a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc2..b64f5944b3c0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d254..a52fefdae0ab 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b79..b7ff864ac132 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56c..695fb279b4a0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944f..5a912b8fba14 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebfb..eb1815c253b5 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf640..663b3bada3d0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e6..371995493b22 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b93..e6fe2d98d7fd 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc69..e5b9f2ecf6c7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54a..f69c56184a74 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba991..9c42b7a38ced 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dcc..2b0e91af52a3 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb1..02a2a7e9a797 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294adf..f0c599021938 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b74306..057ba0fa91a1 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d2..41f1a2082407 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db272..be30fcc1ffd3 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037af..27004e06a68a 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dcb..84f6fffcad04 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b5..9486d1506ddb 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662c..ccaa233ea1ed 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f622..49c97e9c2ea5 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } }
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb75..3a8252adb9cd 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300ea..4f3c65bdd5c2 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcefb..385771154a86 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97e..5c499a667fd1 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd625..09cb2b38fbf1 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab415235951..77a448596f76 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff961..ac7cfabf9ef7 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c69265..fa0e2007f32c 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a0359847..e2c924f58b5f 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f1..769c5d117163 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018aea..91693cfdbacc 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df86..96526eb00e3b 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a04..669f0b8e43c0 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153cd..93428a71ae61 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb1..2ca1a7004465 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc53..0269297ed57e 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e61..37eee30dc97e 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cce..92af1b957c11 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87a..6a772342d0f0 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0e..fc84dab697a6 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba4..781dcb259f41 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0bf..49e753184701 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c3..1cd69b90130c 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711aee..1b39dfca12f2 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe54385109..01eb86ca2a4c 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b485..6dd94b25deeb 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f18..856f865d5a9e 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e92..65ee8ff8a333 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc4..102c2bd896ae 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96e..4903dc308b76 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662ba..7809c9733a38 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e5..30522f99cc23 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1ebc..eceacab37b36 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b7845..84d497a1c218 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c3..b51fc5e0e176 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f2..d822278df57a 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e3..197c8c1cccc8 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871a..fbb74e7b559a 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4ba..36cc52e46fbc 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a8..5d1e275dfcb4 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a33..c53189a28fd6 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c4..375654cd4e0f 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb85..1fbb4f01cfe2 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfeb..57765dd8d8a6 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee372..37b228eff9b6 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c96..8dddbea38a12 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4c..89abdd90a82a 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d7..8080e9fbfbd6 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca3..65ce086bfd5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035a..5d30d694bb86 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad436..3a81c8d63644 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a1..f7dd30ca3117 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed7..669bb4d9f198 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd9717..2c37753f6030 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e7..c4dab1aa7108 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb25..a96c6c83b0e1 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfdae..39d58e0da7bb 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4b..fd08192e98d1 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa9..0dcc3fdd9329 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0e..269999a1f912 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b69..b2df01e7d511 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce630..cc92e6b66e3d 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b9..0343bcf226b6 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee59..5e9da1e5bf17 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636a..9d8958599ab3 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a04..0b318a9da677 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d3..1eb29e030886 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e366..28602822d79c 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea619877059..c01aaf770629 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b2..51238dc6297c 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f937..7666fa388ac1 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da9..65874be855d3 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee300..41232c083c18 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098a..fec23e625253 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb76..2a3dbcd97f92 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be5..c162bdf48660 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c804..63a53b46ec0a 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f50016..f9a7ad5b0f05 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9d..1294e6c58701 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43a..a6acd0aacf3f 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150a..116d11827eba 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293ba..ee7a1ffff466 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a92..bdcd1108ce13 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f2..fda212a12be6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd8..0b3978161a6e 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fef..be46b71a9c7c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e0..52531e6dc2c3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d91..a33aa6c7592f 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320c..9b1da17e3df5 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600b..a43d179ae1b1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd7914218..72e04f1d26b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12ec..09fdc2e644ee 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f097..45b0e6e8b7e3 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0b..9eb3c92f408c 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a7..ea7191787bed 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1a..6e8a467c945f 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada440..7866296aa306 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3e..c0e5efcacbaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d4315249..dc3bc7569684 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e89..aadded80a8df 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f5..d131a8c9ae0c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c5..bc5bf77e0b5c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f063..f12972743bbd 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd79..e91045874e99 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f5..9c6de0bfe503 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b589662..9f88a6e57856 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd9699..77b000e31fcf 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106f..bf68a0f3d694 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833e..7a4ad287907e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da0..a42cf6aab98e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd52..fdac0ece2beb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4b..577c52ca812c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26b..dda42aafd089 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740f..077d6b21e96b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be6..a1a105ec81ce 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d14..ab5baf70c795 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c0..4eb5615df737 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8e..9644c085fd16 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705f..501855a4ba73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3c..c926ef518d5c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d002..2088432494de 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d00687..91931b0769b6 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b510..db65523fbc7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79e..68a5fd854916 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b92..2c6d4590fc1d 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca9..170d7bc8b1aa 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e75983..1ef7d45807eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad20..cb69cfaa0c82 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452d..b1dcd189b759 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd76..0f52805478b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8cb..795aab90305a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a8..7a3c465781ba 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da11579..bb54b8033907 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000b..a2b9fd150263 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8ac..5d37e94082f7 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a9..d38f978975e6 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac737..473a8f078724 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685f..4a9499acd83a 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c57..410351f11b43 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a901..d45a359c96ca 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd4..a16394fd4816 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c7..ecf2e1bbe2fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a2..6beb513bba92 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf3..c5ce84f5bff6 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af81..e498c3b8396a 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e5..44e7eac73055 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed9..a5dbfa4f8e55 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe6..fe44e06ce207 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867c..728d9c209fbc 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a634..1cd9abbd2dae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2d..c42f88a79644 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c50..51ffcbeedc4b 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3fd..932f24911095 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cbf..b432b2da6b74 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c835..c1d94498c723 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf3..0c615d497465 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3a..0abbce2ed776 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae793..054e53179c41 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c996..7f93d76f54f9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e1778..c1880c8571e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5b..91e7e730a612 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0be..b22d482e2bfe 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16d..49c90679da34 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad49004..005f9c9bc84b 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b300820..0c5ebf9a902e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee5..24aa24b037d1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad8..474784133245 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0e..37422fbd6ecd 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7aa..e4d16c7fb723 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478ac..ca8fcc372b23 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b80..7102504a1ae1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6db..de8916770a56 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a3..2486a0688bb2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d163..7fadf9a33a93 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1c..f81861ecade9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f0..8f6094a1fb1e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e1..d9dc0a03548c 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff530..83fa20db9216 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c9..6fcad3624221 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab915..553fc539eaff 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e30677..9597d2e71fa1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd11..c31d4cfb75cb 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 50e8004f13bd..ddc19185decf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

* [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target
@ 2023-10-31 13:16 Alexandre Oliva
  0 siblings, 0 replies; 11+ messages in thread
From: Alexandre Oliva @ 2023-10-31 13:16 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:4fab5481ab30adb808a8bf46d886669cbf11c648

commit 4fab5481ab30adb808a8bf46d886669cbf11c648
Author: Alexandre Oliva <oliva@adacore.com>
Date:   Tue Oct 31 09:38:06 2023 -0300

    testsuite: introduce hostedlib effective target
    
    Several C++ tests fail with --disable-hosted-libstdcxx, whether
    because stdc++ext gets linked in despite not being built, because
    standard headers are included but that are unavailable in this mode,
    or because headers are (mistakenly?) expected to introduce
    declarations such as for ::abort, but in this mode they don't.
    
    This patch introduces an effective target for GCC test, equivalent to
    one that's available in the libstdc++-v3 testsuite, and arranges for
    all such tests to be skipped when libstdc++-v3 is not hosted.
    
    
    for  gcc/ChangeLog
    
            * doc/sourcebuild.texi (hostedlib): New effective target.
    
    for  gcc/testsuite/ChangeLog
    
            * lib/target-supports.exp (check_effective_target_hostedlib):
            New.
            * g++.dg/contracts/contracts-access1.C: Skip if !hostedlib
            because of libstdc++exp.
            * g++.dg/contracts/contracts-assume3.C: Likewise.
            * g++.dg/contracts/contracts-assume4.C: Likewise.
            * g++.dg/contracts/contracts-config1.C: Likewise.
            * g++.dg/contracts/contracts-constexpr1.C: Likewise.
            * g++.dg/contracts/contracts-deduced2.C: Likewise.
            * g++.dg/contracts/contracts-externC.C: Likewise.
            * g++.dg/contracts/contracts-friend1.C: Likewise.
            * g++.dg/contracts/contracts-multiline1.C: Likewise.
            * g++.dg/contracts/contracts-nested-class2.C: Likewise.
            * g++.dg/contracts/contracts-post2.C: Likewise.
            * g++.dg/contracts/contracts-post3.C: Likewise.
            * g++.dg/contracts/contracts-pre2a2.C: Likewise.
            * g++.dg/contracts/contracts10.C: Likewise.
            * g++.dg/contracts/contracts18.C: Likewise.
            * g++.dg/contracts/contracts19.C: Likewise.
            * g++.dg/contracts/contracts2.C: Likewise.
            * g++.dg/contracts/contracts24.C: Likewise.
            * g++.dg/contracts/contracts25.C: Likewise.
            * g++.dg/contracts/contracts3.C: Likewise.
            * g++.dg/contracts/contracts4.C: Likewise.
            * g++.dg/contracts/contracts5.C: Likewise.
            * g++.dg/contracts/contracts6.C: Likewise.
            * g++.dg/contracts/contracts7.C: Likewise.
            * g++.dg/contracts/contracts9.C: Likewise.
            * g++.dg/pch/system-1.C: Skip if !hostedlib because of
            unavailable headers.
            * g++.dg/pch/system-2.C: Likewise.
            * c-c++-common/pr36513-2.c: Likewise.
            * g++.dg/analyzer/pr93212.C: Likewise.
            * g++.dg/concepts/expression.C: Likewise.
            * g++.dg/concepts/fn3.C: Likewise.
            * g++.dg/concepts/fn9.C: Likewise.
            * g++.dg/concepts/generic-fn.C: Likewise.
            * g++.dg/concepts/intro2.C: Likewise.
            * g++.dg/contracts/contracts-assume2.C: Likewise.
            * g++.dg/contracts/contracts-ignore2.C: Likewise.
            * g++.dg/contracts/contracts-pre10.C: Likewise.
            * g++.dg/contracts/contracts-pre2.C: Likewise.
            * g++.dg/contracts/contracts-pre3.C: Likewise.
            * g++.dg/contracts/contracts-pre4.C: Likewise.
            * g++.dg/contracts/contracts-pre5.C: Likewise.
            * g++.dg/contracts/contracts-pre7.C: Likewise.
            * g++.dg/contracts/contracts-pre9.C: Likewise.
            * g++.dg/contracts/contracts-redecl3.C: Likewise.
            * g++.dg/contracts/contracts-redecl4.C: Likewise.
            * g++.dg/contracts/contracts-redecl6.C: Likewise.
            * g++.dg/contracts/contracts-redecl7.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec1.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec2.C: Likewise.
            * g++.dg/contracts/contracts-tmpl-spec3.C: Likewise.
            * g++.dg/contracts/contracts14.C: Likewise.
            * g++.dg/contracts/contracts15.C: Likewise.
            * g++.dg/contracts/contracts16.C: Likewise.
            * g++.dg/contracts/contracts17.C: Likewise.
            * g++.dg/contracts/contracts22.C: Likewise.
            * g++.dg/contracts/contracts35.C: Likewise.
            * g++.dg/coroutines/pr100611.C: Likewise.
            * g++.dg/coroutines/pr101367.C: Likewise.
            * g++.dg/coroutines/pr101976.C: Likewise.
            * g++.dg/coroutines/pr102454.C: Likewise.
            * g++.dg/coroutines/pr104051.C: Likewise.
            * g++.dg/coroutines/pr94288.C: Likewise.
            * g++.dg/coroutines/pr95520.C: Likewise.
            * g++.dg/coroutines/pr97587.C: Likewise.
            * g++.dg/coroutines/pr99576_1.C: Likewise.
            * g++.dg/coroutines/pr99576_2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-16-template-traits.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-15-default-return_void.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-04-complex-local-state.C: Likewise.
            * g++.dg/coroutines/torture/func-params-08.C: Likewise.
            * g++.dg/coroutines/torture/func-params-09-awaitable-parms.C: Likewise.
            * g++.dg/coroutines/torture/local-var-05-awaitable.C: Likewise.
            * g++.dg/coroutines/torture/pr98704.C: Likewise.
            * g++.dg/cpp0x/Wliteral-suffix.C: Likewise.
            * g++.dg/cpp0x/Wpessimizing-move2.C: Likewise.
            * g++.dg/cpp0x/constexpr-70001-3.C: Likewise.
            * g++.dg/cpp0x/constexpr-ice16.C: Likewise.
            * g++.dg/cpp0x/dc5.C: Likewise.
            * g++.dg/cpp0x/enum35.C: Likewise.
            * g++.dg/cpp0x/enum36.C: Likewise.
            * g++.dg/cpp0x/initlist-opt1.C: Likewise.
            * g++.dg/cpp0x/initlist-vect2.C: Likewise.
            * g++.dg/cpp0x/initlist13.C: Likewise.
            * g++.dg/cpp0x/initlist15.C: Likewise.
            * g++.dg/cpp0x/initlist25.C: Likewise.
            * g++.dg/cpp0x/initlist54.C: Likewise.
            * g++.dg/cpp0x/initlist92.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-capture-const-ref.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-deduce.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class-neg.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-in-class.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mixed.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-mutable.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nested.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-non-const.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nop.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-nullptr.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-pass.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-recursive.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref-default.C: Likewise.
            * g++.dg/cpp0x/lambda/lambda-ref.C: Likewise.
            * g++.dg/cpp0x/nullptr20.C: Likewise.
            * g++.dg/cpp0x/pr61038.C: Likewise.
            * g++.dg/cpp0x/rv-trivial-bug.C: Likewise.
            * g++.dg/cpp0x/udlit-concat-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-concat.C: Likewise.
            * g++.dg/cpp0x/udlit-embed-quote.C: Likewise.
            * g++.dg/cpp0x/udlit-general.C: Likewise.
            * g++.dg/cpp0x/udlit-namespace.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-op.C: Likewise.
            * g++.dg/cpp0x/udlit-raw-str.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve-char8_t.C: Likewise.
            * g++.dg/cpp0x/udlit-resolve.C: Likewise.
            * g++.dg/cpp0x/udlit-sfinae.C: Likewise.
            * g++.dg/cpp0x/udlit-suffix-neg.C: Likewise.
            * g++.dg/cpp0x/udlit-template.C: Likewise.
            * g++.dg/cpp0x/variadic-bind.C: Likewise.
            * g++.dg/cpp0x/variadic-function.C: Likewise.
            * g++.dg/cpp0x/variadic-mem_fn.C: Likewise.
            * g++.dg/cpp0x/variadic-tuple.C: Likewise.
            * g++.dg/cpp1y/auto-fn45.C: Likewise.
            * g++.dg/cpp1y/complex_literals1.C: Likewise.
            * g++.dg/cpp1y/complex_literals1a.C: Likewise.
            * g++.dg/cpp1y/constexpr-66093.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert1.C: Likewise.
            * g++.dg/cpp1y/constexpr-assert2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-69078-2.C: Likewise.
            * g++.dg/cpp1y/lambda-generic-x.C: Likewise.
            * g++.dg/cpp1y/lambda-init8.C: Likewise.
            * g++.dg/cpp1y/new2.C: Likewise.
            * g++.dg/cpp1y/nsdmi-aggr12.C: Likewise.
            * g++.dg/cpp1y/pr57640.C: Likewise.
            * g++.dg/cpp1y/pr77786.C: Likewise.
            * g++.dg/cpp1y/pr95226.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-sfinae.C: Likewise.
            * g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C: Likewise.
            * g++.dg/cpp1z/class-deduction14.C: Likewise.
            * g++.dg/cpp1z/decomp37.C: Likewise.
            * g++.dg/cpp1z/eval-order2.C: Likewise.
            * g++.dg/cpp1z/fold1.C: Likewise.
            * g++.dg/cpp1z/init-statement6.C: Likewise.
            * g++.dg/cpp1z/launder3.C: Likewise.
            * g++.dg/cpp1z/launder4.C: Likewise.
            * g++.dg/cpp1z/launder5.C: Likewise.
            * g++.dg/cpp1z/launder6.C: Likewise.
            * g++.dg/cpp1z/utf8.C: Likewise.
            * g++.dg/cpp2a/concepts-cmath.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec1.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec4.C: Likewise.
            * g++.dg/cpp2a/concepts-explicit-spec5.C: Likewise.
            * g++.dg/cpp2a/concepts-memfun.C: Likewise.
            * g++.dg/cpp2a/concepts-pr67774.C: Likewise.
            * g++.dg/cpp2a/cond-triv2.C: Likewise.
            * g++.dg/cpp2a/nontype-float1.C: Likewise.
            * g++.dg/diagnostic/disable.C: Likewise.
            * g++.dg/diagnostic/pr65923.C: Likewise.
            * g++.dg/eh/arm-vfp-unwind.C: Likewise.
            * g++.dg/eh/crossjump1.C: Likewise.
            * g++.dg/eh/omit-frame-pointer.C: Likewise.
            * g++.dg/eh/simd-3.C: Likewise.
            * g++.dg/ext/bases.C: Likewise.
            * g++.dg/ext/builtin-line1.C: Likewise.
            * g++.dg/ext/complex4.C: Likewise.
            * g++.dg/ext/has_nothrow_assign.C: Likewise.
            * g++.dg/ext/has_nothrow_assign_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor.C: Likewise.
            * g++.dg/ext/has_nothrow_constructor_odr.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-1.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-2.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-3.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-4.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-5.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-6.C: Likewise.
            * g++.dg/ext/has_nothrow_copy-7.C: Likewise.
            * g++.dg/ext/has_nothrow_copy_odr.C: Likewise.
            * g++.dg/ext/has_trivial_assign.C: Likewise.
            * g++.dg/ext/has_trivial_constructor.C: Likewise.
            * g++.dg/ext/has_trivial_copy.C: Likewise.
            * g++.dg/ext/has_trivial_destructor-1.C: Likewise.
            * g++.dg/ext/has_virtual_destructor.C: Likewise.
            * g++.dg/ext/is_abstract.C: Likewise.
            * g++.dg/ext/is_aggregate.C: Likewise.
            * g++.dg/ext/is_base_of.C: Likewise.
            * g++.dg/ext/is_class.C: Likewise.
            * g++.dg/ext/is_convertible2.C: Likewise.
            * g++.dg/ext/is_empty.C: Likewise.
            * g++.dg/ext/is_enum.C: Likewise.
            * g++.dg/ext/is_pod.C: Likewise.
            * g++.dg/ext/is_polymorphic.C: Likewise.
            * g++.dg/ext/is_union.C: Likewise.
            * g++.dg/ext/underlying_type10.C: Likewise.
            * g++.dg/ext/underlying_type4.C: Likewise.
            * g++.dg/inherit/virtual8.C: Likewise.
            * g++.dg/init/array4.C: Likewise.
            * g++.dg/init/new18.C: Likewise.
            * g++.dg/init/new39.C: Likewise.
            * g++.dg/init/new40.C: Likewise.
            * g++.dg/ipa/devirt-29.C: Likewise.
            * g++.dg/ipa/pr85549.C: Likewise.
            * g++.dg/lookup/missing-std-include-3.C: Likewise.
            * g++.dg/lookup/pr21802.C: Likewise.
            * g++.dg/lto/20091022-2_0.C: Likewise.
            * g++.dg/lto/20091219_0.C: Likewise.
            * g++.dg/lto/pr89358_0.C: Likewise.
            * g++.dg/lto/pr89358_1.C: Likewise.
            * g++.dg/modules/binding-1_a.H: Likewise.
            * g++.dg/modules/binding-1_b.H: Likewise.
            * g++.dg/modules/contracts-1_a.C: Likewise.
            * g++.dg/modules/contracts-1_b.C: Likewise.
            * g++.dg/modules/contracts-2_a.C: Likewise.
            * g++.dg/modules/contracts-2_b.C: Likewise.
            * g++.dg/modules/contracts-3_a.C: Likewise.
            * g++.dg/modules/contracts-3_b.C: Likewise.
            * g++.dg/modules/contracts-4_a.C: Likewise.
            * g++.dg/modules/contracts-4_d.C: Likewise.
            * g++.dg/modules/global-3_a.C: Likewise.
            * g++.dg/modules/hello-1_a.C: Likewise.
            * g++.dg/modules/iostream-1_a.H: Likewise.
            * g++.dg/modules/part-5_c.C: Likewise.
            * g++.dg/modules/string-1_a.H: Likewise.
            * g++.dg/modules/string-1_b.C: Likewise.
            * g++.dg/modules/string-view1.C: Likewise.
            * g++.dg/opt/nrv17.C: Likewise.
            * g++.dg/opt/pr102970.C: Likewise.
            * g++.dg/opt/pr109434.C: Likewise.
            * g++.dg/opt/pr15551.C: Likewise.
            * g++.dg/opt/pr30965.C: Likewise.
            * g++.dg/opt/pr77844.C: Likewise.
            * g++.dg/opt/pr85393.C: Likewise.
            * g++.dg/other/final7.C: Likewise.
            * g++.dg/other/pr40561.C: Likewise.
            * g++.dg/parse/parse5.C: Likewise.
            * g++.dg/pr100253.C: Likewise.
            * g++.dg/pr104547.C: Likewise.
            * g++.dg/pr107087.C: Likewise.
            * g++.dg/pr71488.C: Likewise.
            * g++.dg/pr71655.C: Likewise.
            * g++.dg/pr79095-3.C: Likewise.
            * g++.dg/pr83239.C: Likewise.
            * g++.dg/pr99966.C: Likewise.
            * g++.dg/rtti/typeid4.C: Likewise.
            * g++.dg/spellcheck-inttypes.C: Likewise.
            * g++.dg/template/friend10.C: Likewise.
            * g++.dg/template/pr69961a.C: Likewise.
            * g++.dg/template/show-template-tree-3.C: Likewise.
            * g++.dg/torture/alias-1.C: Likewise.
            * g++.dg/torture/builtin-location.C: Likewise.
            * g++.dg/torture/pr103669.C: Likewise.
            * g++.dg/torture/pr104601.C: Likewise.
            * g++.dg/torture/pr106922.C: Likewise.
            * g++.dg/torture/pr111019.C: Likewise.
            * g++.dg/torture/pr33572.C: Likewise.
            * g++.dg/torture/pr33735.C: Likewise.
            * g++.dg/torture/pr34099.C: Likewise.
            * g++.dg/torture/pr39417.C: Likewise.
            * g++.dg/torture/pr44972.C: Likewise.
            * g++.dg/torture/pr46364.C: Likewise.
            * g++.dg/torture/pr49628.C: Likewise.
            * g++.dg/torture/pr51903.C: Likewise.
            * g++.dg/torture/pr54498.C: Likewise.
            * g++.dg/torture/pr60750.C: Likewise.
            * g++.dg/torture/pr67600.C: Likewise.
            * g++.dg/torture/pr82084.C: Likewise.
            * g++.dg/torture/pr95493-1.C: Likewise.
            * g++.dg/tree-ssa/allocator-opt1.C: Likewise.
            * g++.dg/tree-ssa/empty-loop.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt1.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt2.C: Likewise.
            * g++.dg/tree-ssa/initlist-opt3.C: Likewise.
            * g++.dg/tree-ssa/loop-cond-split-1.C: Likewise.
            * g++.dg/tree-ssa/pr101839.C: Likewise.
            * g++.dg/tree-ssa/pr104529.C: Likewise.
            * g++.dg/tree-ssa/pr14703.C: Likewise.
            * g++.dg/tree-ssa/pr19786.C: Likewise.
            * g++.dg/tree-ssa/pr46228.C: Likewise.
            * g++.dg/tree-ssa/pr63841.C: Likewise.
            * g++.dg/tree-ssa/pr69336.C: Likewise.
            * g++.dg/tree-ssa/pr78847.C: Likewise.
            * g++.dg/tree-ssa/pr95638.C: Likewise.
            * g++.dg/warn/Warray-bounds-27.C: Likewise.
            * g++.dg/warn/Wdangling-pointer-pr110055.C: Likewise.
            * g++.dg/warn/Wdangling-reference10.C: Likewise.
            * g++.dg/warn/Wdangling-reference4.C: Likewise.
            * g++.dg/warn/Wdangling-reference5.C: Likewise.
            * g++.dg/warn/Winline-3.C: Likewise.
            * g++.dg/warn/Wmemset-elt-size1.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: Likewise.
            * g++.dg/warn/Wstrict-aliasing-bogus-escape.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-8.C: Likewise.
            * g++.dg/warn/Wstringop-overread-1.C: Likewise.
            * g++.dg/warn/Wuninitialized-33.C: Likewise.
            * g++.dg/warn/format1.C: Likewise.
            * g++.dg/warn/string1.C: Likewise.
            * g++.dg/warn/uninit-pr105562.C: Likewise.
            * g++.old-deja/g++.benjamin/15071.C: Likewise.
            * g++.old-deja/g++.brendan/copy9.C: Likewise.
            * g++.old-deja/g++.brendan/crash15.C: Likewise.
            * g++.old-deja/g++.brendan/crash20.C: Likewise.
            * g++.old-deja/g++.brendan/crash30.C: Likewise.
            * g++.old-deja/g++.brendan/crash38.C: Likewise.
            * g++.old-deja/g++.brendan/crash39.C: Likewise.
            * g++.old-deja/g++.brendan/crash49.C: Likewise.
            * g++.old-deja/g++.brendan/crash52.C: Likewise.
            * g++.old-deja/g++.brendan/crash62.C: Likewise.
            * g++.old-deja/g++.brendan/cvt1.C: Likewise.
            * g++.old-deja/g++.brendan/err-msg3.C: Likewise.
            * g++.old-deja/g++.brendan/nest21.C: Likewise.
            * g++.old-deja/g++.brendan/ptolemy2.C: Likewise.
            * g++.old-deja/g++.jason/template24.C: Likewise.
            * g++.old-deja/g++.jason/template31.C: Likewise.
            * g++.old-deja/g++.jason/typeid1.C: Likewise.
            * g++.old-deja/g++.law/arg1.C: Likewise.
            * g++.old-deja/g++.law/arg8.C: Likewise.
            * g++.old-deja/g++.law/arm12.C: Likewise.
            * g++.old-deja/g++.law/arm9.C: Likewise.
            * g++.old-deja/g++.law/bad-error7.C: Likewise.
            * g++.old-deja/g++.law/code-gen5.C: Likewise.
            * g++.old-deja/g++.law/ctors10.C: Likewise.
            * g++.old-deja/g++.law/ctors12.C: Likewise.
            * g++.old-deja/g++.law/ctors13.C: Likewise.
            * g++.old-deja/g++.law/ctors17.C: Likewise.
            * g++.old-deja/g++.law/ctors6.C: Likewise.
            * g++.old-deja/g++.law/cvt16.C: Likewise.
            * g++.old-deja/g++.law/cvt2.C: Likewise.
            * g++.old-deja/g++.law/cvt7.C: Likewise.
            * g++.old-deja/g++.law/except5.C: Likewise.
            * g++.old-deja/g++.law/missed-error2.C: Likewise.
            * g++.old-deja/g++.law/nest3.C: Likewise.
            * g++.old-deja/g++.law/operators32.C: Likewise.
            * g++.old-deja/g++.law/operators4.C: Likewise.
            * g++.old-deja/g++.law/vbase1.C: Likewise.
            * g++.old-deja/g++.law/virtual3.C: Likewise.
            * g++.old-deja/g++.law/visibility1.C: Likewise.
            * g++.old-deja/g++.law/visibility10.C: Likewise.
            * g++.old-deja/g++.law/visibility13.C: Likewise.
            * g++.old-deja/g++.law/visibility17.C: Likewise.
            * g++.old-deja/g++.law/visibility2.C: Likewise.
            * g++.old-deja/g++.law/visibility22.C: Likewise.
            * g++.old-deja/g++.law/visibility25.C: Likewise.
            * g++.old-deja/g++.law/visibility7.C: Likewise.
            * g++.old-deja/g++.martin/new1.C: Likewise.
            * g++.old-deja/g++.mike/dyncast7.C: Likewise.
            * g++.old-deja/g++.mike/eh13.C: Likewise.
            * g++.old-deja/g++.mike/eh2.C: Likewise.
            * g++.old-deja/g++.mike/net34.C: Likewise.
            * g++.old-deja/g++.mike/net46.C: Likewise.
            * g++.old-deja/g++.mike/p658.C: Likewise.
            * g++.old-deja/g++.mike/rtti1.C: Likewise.
            * g++.old-deja/g++.ns/using4.C: Likewise.
            * g++.old-deja/g++.ns/using6.C: Likewise.
            * g++.old-deja/g++.other/defarg6.C: Likewise.
            * g++.old-deja/g++.other/headers1.C: Likewise.
            * g++.old-deja/g++.other/init9.C: Likewise.
            * g++.old-deja/g++.other/inline14.C: Likewise.
            * g++.old-deja/g++.other/inline2.C: Likewise.
            * g++.old-deja/g++.other/inline7.C: Likewise.
            * g++.old-deja/g++.other/inline8.C: Likewise.
            * g++.old-deja/g++.other/optimize2.C: Likewise.
            * g++.old-deja/g++.other/sibcall1.C: Likewise.
            * g++.old-deja/g++.other/unchanging1.C: Likewise.
            * g++.old-deja/g++.pt/crash68.C: Likewise.
            * g++.old-deja/g++.pt/memtemp100.C: Likewise.
            * g++.old-deja/g++.robertl/eb109.C: Likewise.
            * g++.old-deja/g++.robertl/eb113.C: Likewise.
            * g++.old-deja/g++.robertl/eb115.C: Likewise.
            * g++.old-deja/g++.robertl/eb124.C: Likewise.
            * g++.old-deja/g++.robertl/eb127.C: Likewise.
            * g++.old-deja/g++.robertl/eb129.C: Likewise.
            * g++.old-deja/g++.robertl/eb129a.C: Likewise.
            * g++.old-deja/g++.robertl/eb130.C: Likewise.
            * g++.old-deja/g++.robertl/eb132.C: Likewise.
            * g++.old-deja/g++.robertl/eb15.C: Likewise.
            * g++.old-deja/g++.robertl/eb21.C: Likewise.
            * g++.old-deja/g++.robertl/eb24.C: Likewise.
            * g++.old-deja/g++.robertl/eb27.C: Likewise.
            * g++.old-deja/g++.robertl/eb28.C: Likewise.
            * g++.old-deja/g++.robertl/eb29.C: Likewise.
            * g++.old-deja/g++.robertl/eb3.C: Likewise.
            * g++.old-deja/g++.robertl/eb30.C: Likewise.
            * g++.old-deja/g++.robertl/eb31.C: Likewise.
            * g++.old-deja/g++.robertl/eb33.C: Likewise.
            * g++.old-deja/g++.robertl/eb36.C: Likewise.
            * g++.old-deja/g++.robertl/eb39.C: Likewise.
            * g++.old-deja/g++.robertl/eb4.C: Likewise.
            * g++.old-deja/g++.robertl/eb41.C: Likewise.
            * g++.old-deja/g++.robertl/eb43.C: Likewise.
            * g++.old-deja/g++.robertl/eb44.C: Likewise.
            * g++.old-deja/g++.robertl/eb46.C: Likewise.
            * g++.old-deja/g++.robertl/eb54.C: Likewise.
            * g++.old-deja/g++.robertl/eb55.C: Likewise.
            * g++.old-deja/g++.robertl/eb59.C: Likewise.
            * g++.old-deja/g++.robertl/eb60.C: Likewise.
            * g++.old-deja/g++.robertl/eb62.C: Likewise.
            * g++.old-deja/g++.robertl/eb66.C: Likewise.
            * g++.old-deja/g++.robertl/eb7.C: Likewise.
            * g++.old-deja/g++.robertl/eb73.C: Likewise.
            * g++.old-deja/g++.robertl/eb77.C: Likewise.
            * g++.old-deja/g++.robertl/eb79.C: Likewise.
            * g++.old-deja/g++.warn/iomanip.C: Likewise.
            * g++.dg/analyzer/vfunc-2.C: Likewise.
            * g++.dg/coroutines/pr100772-b.C: Likewise.
            * g++.dg/coroutines/pr101133.C: Likewise.
            * g++.dg/coroutines/pr95736.C: Likewise.
            * g++.dg/coroutines/ramp-return-a.C: Likewise.
            * g++.dg/coroutines/ramp-return-b.C: Likewise.
            * g++.dg/coroutines/ramp-return-c.C: Likewise.
            * g++.dg/coroutines/torture/extern-c-coroutine.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-01.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-02.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-03.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-04.C: Likewise.
            * g++.dg/coroutines/torture/pr95615-05.C: Likewise.
            * g++.dg/cpp0x/udlit-string-literal.C: Likewise.
            * g++.dg/cpp1y/udlit-userdef-string.C: Likewise.
            * g++.dg/modules/xtreme-header-1_a.H: Likewise.
            * g++.dg/modules/xtreme-header-1_b.C: Likewise.
            * g++.dg/modules/xtreme-header-2_a.H: Likewise.
            * g++.dg/modules/xtreme-header-2_b.C: Likewise.
            * g++.dg/modules/xtreme-header-3_a.H: Likewise.
            * g++.dg/modules/xtreme-header-3_b.C: Likewise.
            * g++.dg/modules/xtreme-header-4_a.H: Likewise.
            * g++.dg/modules/xtreme-header-4_b.C: Likewise.
            * g++.dg/modules/xtreme-header-5_a.H: Likewise.
            * g++.dg/modules/xtreme-header-5_b.C: Likewise.
            * g++.dg/modules/xtreme-header-6_a.H: Likewise.
            * g++.dg/modules/xtreme-header-6_b.C: Likewise.
            * g++.dg/modules/xtreme-header_a.H: Likewise.
            * g++.dg/modules/xtreme-header_b.C: Likewise.
            * g++.dg/modules/xtreme-tr1_a.H: Likewise.
            * g++.dg/modules/xtreme-tr1_b.C: Likewise.
            * g++.dg/opt/dtor4-aux.cc: Likewise.
            * g++.dg/opt/dtor4.C: Likewise.
            * g++.dg/parse/lookup1.C: Likewise.
            * g++.dg/torture/pr49938.C: Likewise.
            * g++.dg/warn/Wfree-nonheap-object-3.C: Likewise.
            * g++.dg/warn/Wstringop-overflow-6.C: Likewise.
            * g++.dg/coroutines/pr101765.C: Skip in !hostedlib because of
            unavailable ::abort in cstdlib.
            * g++.dg/coroutines/pr95477.C: Likewise.
            * g++.dg/coroutines/pr95599.C: Likewise.
            * g++.dg/coroutines/pr95711.C: Likewise.
            * g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C: Likewise.
            * g++.dg/coroutines/torture/alloc-01-overload-newdel.C: Likewise.
            * g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C: Likewise.
            * g++.dg/coroutines/torture/alloc-03-overload-new-1.C: Likewise.
            * g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C: Likewise.
            * g++.dg/coroutines/torture/call-00-co-aw-arg.C: Likewise.
            * g++.dg/coroutines/torture/call-01-multiple-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-02-temp-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/class-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/class-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-02-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-03-operator-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/class-04-lambda-1.C: Likewise.
            * g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/class-06-lambda-capture-ref.C: Likewise.
            * g++.dg/coroutines/torture/class-07-data-member.C: Likewise.
            * g++.dg/coroutines/torture/co-await-00-trivial.C: Likewise.
            * g++.dg/coroutines/torture/co-await-01-with-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-02-xform.C: Likewise.
            * g++.dg/coroutines/torture/co-await-03-rhs-op.C: Likewise.
            * g++.dg/coroutines/torture/co-await-04-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-await-05-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-await-06-ovl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-07-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-await-08-cascade.C: Likewise.
            * g++.dg/coroutines/torture/co-await-09-pair.C: Likewise.
            * g++.dg/coroutines/torture/co-await-10-template-fn-arg.C: Likewise.
            * g++.dg/coroutines/torture/co-await-11-forwarding.C: Likewise.
            * g++.dg/coroutines/torture/co-await-12-operator-2.C: Likewise.
            * g++.dg/coroutines/torture/co-await-13-return-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C: Likewise.
            * g++.dg/coroutines/torture/co-await-15-return-non-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C: Likewise.
            * g++.dg/coroutines/torture/co-await-18-if-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-19-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-20-do-while-cond.C: Likewise.
            * g++.dg/coroutines/torture/co-await-21-switch-value.C: Likewise.
            * g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C: Likewise.
            * g++.dg/coroutines/torture/co-await-24-for-init.C: Likewise.
            * g++.dg/coroutines/torture/co-await-25-for-condition.C: Likewise.
            * g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-05-return-value.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-13-template-2.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-14-template-3.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C: Likewise.
            * g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-00-triv.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-01-multi.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-02-loop.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-03-tmpl.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-05-co-aw.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-06-fun-parm.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-07-template-fn-param.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-08-more-refs.C: Likewise.
            * g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-0.C: Likewise.
            * g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C: Likewise.
            * g++.dg/coroutines/torture/func-params-00.C: Likewise.
            * g++.dg/coroutines/torture/func-params-01.C: Likewise.
            * g++.dg/coroutines/torture/func-params-02.C: Likewise.
            * g++.dg/coroutines/torture/func-params-03.C: Likewise.
            * g++.dg/coroutines/torture/func-params-04.C: Likewise.
            * g++.dg/coroutines/torture/func-params-05.C: Likewise.
            * g++.dg/coroutines/torture/func-params-06.C: Likewise.
            * g++.dg/coroutines/torture/func-params-07.C: Likewise.
            * g++.dg/coroutines/torture/lambda-00-co-ret.C: Likewise.
            * g++.dg/coroutines/torture/lambda-01-co-ret-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-02-co-yield-values.C: Likewise.
            * g++.dg/coroutines/torture/lambda-03-auto-parm-1.C: Likewise.
            * g++.dg/coroutines/torture/lambda-04-templ-parm.C: Likewise.
            * g++.dg/coroutines/torture/lambda-05-capture-copy-local.C: Likewise.
            * g++.dg/coroutines/torture/lambda-06-multi-capture.C: Likewise.
            * g++.dg/coroutines/torture/lambda-07-multi-yield.C: Likewise.
            * g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C: Likewise.
            * g++.dg/coroutines/torture/lambda-09-init-captures.C: Likewise.
            * g++.dg/coroutines/torture/lambda-10-mutable.C: Likewise.
            * g++.dg/coroutines/torture/local-var-00-const.C: Likewise.
            * g++.dg/coroutines/torture/local-var-01-single.C: Likewise.
            * g++.dg/coroutines/torture/local-var-02-conditional.C: Likewise.
            * g++.dg/coroutines/torture/local-var-03-with-awaits.C: Likewise.
            * g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C: Likewise.
            * g++.dg/coroutines/torture/local-var-06-structured-binding.C: Likewise.
            * g++.dg/coroutines/torture/mid-suspend-destruction-0.C: Likewise.
            * g++.dg/coroutines/torture/pr95003.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-00-return_void.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-01-initial-suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-02-final_suspend.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-03-return-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-04-yield-value.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-05-gro.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-06-grooaf.C: Likewise.
            * g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C: Likewise.
            * g++.dg/cpp23/subscript5.C: Likewise.
            * g++.dg/cpp23/subscript6.C: Likewise.
            * g++.dg/eh/filter2.C: Likewise.
            * g++.dg/eh/uncaught1.C: Likewise.
            * g++.dg/eh/uncaught2.C: Likewise.
            * g++.dg/opt/eh4.C: Likewise.
            * g++.dg/opt/reload3.C: Likewise.
            * g++.dg/other/ucnid-1-utf8.C: Likewise.
            * g++.dg/other/ucnid-1.C: Likewise.
            * g++.dg/warn/noreturn-1.C: Likewise.
    
    Issue: gcc#150
    TN: W517-007

Diff:
---
 gcc/doc/sourcebuild.texi                               |  4 ++++
 gcc/testsuite/c-c++-common/pr36513-2.c                 |  1 +
 gcc/testsuite/g++.dg/analyzer/pr93212.C                |  1 +
 gcc/testsuite/g++.dg/analyzer/vfunc-2.C                |  1 +
 gcc/testsuite/g++.dg/concepts/expression.C             |  1 +
 gcc/testsuite/g++.dg/concepts/fn3.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/fn9.C                    |  1 +
 gcc/testsuite/g++.dg/concepts/generic-fn.C             |  1 +
 gcc/testsuite/g++.dg/concepts/intro2.C                 |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-access1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-assume4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-config1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-deduced2.C    |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-externC.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-friend1.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-ignore2.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-multiline1.C  |  1 +
 .../g++.dg/contracts/contracts-nested-class2.C         |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post2.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-post3.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre10.C       |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C      |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre3.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre4.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre5.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre7.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-pre9.C        |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl3.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl4.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl6.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-redecl7.C     |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C  |  1 +
 gcc/testsuite/g++.dg/contracts/contracts10.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts14.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts15.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts16.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts17.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts18.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts19.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts2.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts22.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts24.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts25.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts3.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts35.C           |  1 +
 gcc/testsuite/g++.dg/contracts/contracts4.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts5.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts6.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts7.C            |  1 +
 gcc/testsuite/g++.dg/contracts/contracts9.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100611.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr100772-b.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101133.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101367.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101765.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr101976.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr102454.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr104051.C             |  1 +
 gcc/testsuite/g++.dg/coroutines/pr94288.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95477.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95520.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95599.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95711.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr95736.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr97587.C              |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_1.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/pr99576_2.C            |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-a.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-b.C        |  1 +
 gcc/testsuite/g++.dg/coroutines/ramp-return-c.C        |  1 +
 .../coroutines/torture/alloc-00-gro-on-alloc-fail.C    |  1 +
 .../coroutines/torture/alloc-01-overload-newdel.C      |  1 +
 .../torture/alloc-02-fail-new-grooaf-check.C           |  1 +
 .../coroutines/torture/alloc-03-overload-new-1.C       |  1 +
 .../torture/alloc-04-overload-del-use-two-args.C       |  1 +
 .../g++.dg/coroutines/torture/call-00-co-aw-arg.C      |  1 +
 .../g++.dg/coroutines/torture/call-01-multiple-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/call-02-temp-co-aw.C     |  1 +
 .../g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C |  1 +
 .../g++.dg/coroutines/torture/class-00-co-ret.C        |  1 +
 .../g++.dg/coroutines/torture/class-01-co-ret-parm.C   |  1 +
 .../g++.dg/coroutines/torture/class-02-templ-parm.C    |  1 +
 .../coroutines/torture/class-03-operator-templ-parm.C  |  1 +
 .../g++.dg/coroutines/torture/class-04-lambda-1.C      |  1 +
 .../torture/class-05-lambda-capture-copy-local.C       |  1 +
 .../coroutines/torture/class-06-lambda-capture-ref.C   |  1 +
 .../g++.dg/coroutines/torture/class-07-data-member.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-00-trivial.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-01-with-value.C |  1 +
 .../g++.dg/coroutines/torture/co-await-02-xform.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-03-rhs-op.C     |  1 +
 .../coroutines/torture/co-await-04-control-flow.C      |  1 +
 .../g++.dg/coroutines/torture/co-await-05-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-06-ovl.C        |  1 +
 .../g++.dg/coroutines/torture/co-await-07-tmpl.C       |  1 +
 .../g++.dg/coroutines/torture/co-await-08-cascade.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-09-pair.C       |  1 +
 .../coroutines/torture/co-await-10-template-fn-arg.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-11-forwarding.C |  1 +
 .../g++.dg/coroutines/torture/co-await-12-operator-2.C |  1 +
 .../g++.dg/coroutines/torture/co-await-13-return-ref.C |  1 +
 .../torture/co-await-14-return-ref-to-auto.C           |  1 +
 .../coroutines/torture/co-await-15-return-non-triv.C   |  1 +
 .../coroutines/torture/co-await-16-template-traits.C   |  1 +
 .../coroutines/torture/co-await-17-capture-comp-ref.C  |  1 +
 .../g++.dg/coroutines/torture/co-await-18-if-cond.C    |  1 +
 .../g++.dg/coroutines/torture/co-await-19-while-cond.C |  1 +
 .../coroutines/torture/co-await-20-do-while-cond.C     |  1 +
 .../coroutines/torture/co-await-21-switch-value.C      |  1 +
 .../coroutines/torture/co-await-22-truth-and-of-if.C   |  1 +
 .../g++.dg/coroutines/torture/co-await-24-for-init.C   |  1 +
 .../coroutines/torture/co-await-25-for-condition.C     |  1 +
 .../torture/co-await-26-for-iteration-expr.C           |  1 +
 .../torture/co-ret-00-void-return-is-ready.C           |  1 +
 .../torture/co-ret-01-void-return-is-suspend.C         |  1 +
 .../coroutines/torture/co-ret-03-different-GRO-type.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C  |  1 +
 .../g++.dg/coroutines/torture/co-ret-05-return-value.C |  1 +
 .../torture/co-ret-06-template-promise-val-1.C         |  1 +
 .../coroutines/torture/co-ret-07-void-cast-expr.C      |  1 +
 .../coroutines/torture/co-ret-08-template-cast-ret.C   |  1 +
 .../coroutines/torture/co-ret-09-bool-await-susp.C     |  1 +
 .../torture/co-ret-10-expression-evaluates-once.C      |  1 +
 .../coroutines/torture/co-ret-11-co-ret-co-await.C     |  1 +
 .../coroutines/torture/co-ret-12-co-ret-fun-co-await.C |  1 +
 .../g++.dg/coroutines/torture/co-ret-13-template-2.C   |  1 +
 .../g++.dg/coroutines/torture/co-ret-14-template-3.C   |  1 +
 .../coroutines/torture/co-ret-15-default-return_void.C |  1 +
 .../coroutines/torture/co-ret-16-simple-control-flow.C |  1 +
 .../coroutines/torture/co-ret-17-void-ret-coro.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-00-triv.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-01-multi.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-02-loop.C       |  1 +
 .../g++.dg/coroutines/torture/co-yield-03-tmpl.C       |  1 +
 .../torture/co-yield-04-complex-local-state.C          |  1 +
 .../g++.dg/coroutines/torture/co-yield-05-co-aw.C      |  1 +
 .../g++.dg/coroutines/torture/co-yield-06-fun-parm.C   |  1 +
 .../coroutines/torture/co-yield-07-template-fn-param.C |  1 +
 .../g++.dg/coroutines/torture/co-yield-08-more-refs.C  |  1 +
 .../coroutines/torture/co-yield-09-more-templ-refs.C   |  1 +
 .../g++.dg/coroutines/torture/exceptions-test-0.C      |  1 +
 .../coroutines/torture/exceptions-test-01-n4849-a.C    |  1 +
 .../g++.dg/coroutines/torture/extern-c-coroutine.C     |  2 ++
 .../g++.dg/coroutines/torture/func-params-00.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-01.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-02.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-03.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-04.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-05.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-06.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-07.C         |  1 +
 .../g++.dg/coroutines/torture/func-params-08.C         |  1 +
 .../torture/func-params-09-awaitable-parms.C           |  1 +
 .../g++.dg/coroutines/torture/lambda-00-co-ret.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-01-co-ret-parm.C  |  1 +
 .../coroutines/torture/lambda-02-co-yield-values.C     |  1 +
 .../g++.dg/coroutines/torture/lambda-03-auto-parm-1.C  |  1 +
 .../g++.dg/coroutines/torture/lambda-04-templ-parm.C   |  1 +
 .../coroutines/torture/lambda-05-capture-copy-local.C  |  1 +
 .../coroutines/torture/lambda-06-multi-capture.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-07-multi-yield.C  |  1 +
 .../coroutines/torture/lambda-08-co-ret-parm-ref.C     |  1 +
 .../coroutines/torture/lambda-09-init-captures.C       |  1 +
 .../g++.dg/coroutines/torture/lambda-10-mutable.C      |  1 +
 .../g++.dg/coroutines/torture/local-var-00-const.C     |  1 +
 .../g++.dg/coroutines/torture/local-var-01-single.C    |  1 +
 .../coroutines/torture/local-var-02-conditional.C      |  1 +
 .../coroutines/torture/local-var-03-with-awaits.C      |  1 +
 .../torture/local-var-04-hiding-nested-scopes.C        |  1 +
 .../g++.dg/coroutines/torture/local-var-05-awaitable.C |  1 +
 .../torture/local-var-06-structured-binding.C          |  1 +
 .../coroutines/torture/mid-suspend-destruction-0.C     |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95003.C      |  1 +
 .../g++.dg/coroutines/torture/pr95519-00-return_void.C |  1 +
 .../coroutines/torture/pr95519-01-initial-suspend.C    |  1 +
 .../coroutines/torture/pr95519-02-final_suspend.C      |  1 +
 .../coroutines/torture/pr95519-03-return-value.C       |  1 +
 .../g++.dg/coroutines/torture/pr95519-04-yield-value.C |  1 +
 .../g++.dg/coroutines/torture/pr95519-05-gro.C         |  1 +
 .../g++.dg/coroutines/torture/pr95519-06-grooaf.C      |  1 +
 .../torture/pr95519-07-unhandled-exception.C           |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C   |  1 +
 gcc/testsuite/g++.dg/coroutines/torture/pr98704.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/dc5.C                       |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum35.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/enum36.C                    |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist13.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist15.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist25.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist54.C                |  1 +
 gcc/testsuite/g++.dg/cpp0x/initlist92.C                |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C |  1 +
 .../g++.dg/cpp0x/lambda/lambda-capture-const-ref.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C      |  1 +
 .../g++.dg/cpp0x/lambda/lambda-in-class-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C    |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C       |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C        |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C   |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C |  1 +
 gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/nullptr20.C                 |  1 +
 gcc/testsuite/g++.dg/cpp0x/pr61038.C                   |  1 +
 gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-concat.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-general.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C     |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C              |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C      |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C          |  1 +
 gcc/testsuite/g++.dg/cpp0x/udlit-template.C            |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-bind.C             |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-function.C         |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C           |  1 +
 gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C            |  1 +
 gcc/testsuite/g++.dg/cpp1y/auto-fn45.C                 |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C        |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C           |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C         |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C    |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C          |  1 +
 gcc/testsuite/g++.dg/cpp1y/lambda-init8.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/new2.C                      |  1 +
 gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C              |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr57640.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr77786.C                   |  1 +
 gcc/testsuite/g++.dg/cpp1y/pr95226.C                   |  1 +
 .../g++.dg/cpp1y/udlit-char-template-sfinae.C          |  1 +
 .../udlit-char-template-vs-std-literal-operator.C      |  1 +
 gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C      |  1 +
 gcc/testsuite/g++.dg/cpp1z/class-deduction14.C         |  1 +
 gcc/testsuite/g++.dg/cpp1z/decomp37.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/eval-order2.C               |  1 +
 gcc/testsuite/g++.dg/cpp1z/fold1.C                     |  1 +
 gcc/testsuite/g++.dg/cpp1z/init-statement6.C           |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder3.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder4.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder5.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/launder6.C                  |  1 +
 gcc/testsuite/g++.dg/cpp1z/utf8.C                      |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript5.C                |  1 +
 gcc/testsuite/g++.dg/cpp23/subscript6.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C            |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C   |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C           |  1 +
 gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C          |  1 +
 gcc/testsuite/g++.dg/cpp2a/cond-triv2.C                |  1 +
 gcc/testsuite/g++.dg/cpp2a/nontype-float1.C            |  1 +
 gcc/testsuite/g++.dg/diagnostic/disable.C              |  1 +
 gcc/testsuite/g++.dg/diagnostic/pr65923.C              |  1 +
 gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C               |  1 +
 gcc/testsuite/g++.dg/eh/crossjump1.C                   |  1 +
 gcc/testsuite/g++.dg/eh/filter2.C                      |  1 +
 gcc/testsuite/g++.dg/eh/omit-frame-pointer.C           |  1 +
 gcc/testsuite/g++.dg/eh/simd-3.C                       |  1 +
 gcc/testsuite/g++.dg/eh/uncaught1.C                    |  1 +
 gcc/testsuite/g++.dg/eh/uncaught2.C                    |  1 +
 gcc/testsuite/g++.dg/ext/bases.C                       |  1 +
 gcc/testsuite/g++.dg/ext/builtin-line1.C               |  1 +
 gcc/testsuite/g++.dg/ext/complex4.C                    |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C      |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C        |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_assign.C          |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_constructor.C     |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_copy.C            |  1 +
 gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C    |  1 +
 gcc/testsuite/g++.dg/ext/has_virtual_destructor.C      |  1 +
 gcc/testsuite/g++.dg/ext/is_abstract.C                 |  1 +
 gcc/testsuite/g++.dg/ext/is_aggregate.C                |  1 +
 gcc/testsuite/g++.dg/ext/is_base_of.C                  |  1 +
 gcc/testsuite/g++.dg/ext/is_class.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_convertible2.C             |  1 +
 gcc/testsuite/g++.dg/ext/is_empty.C                    |  1 +
 gcc/testsuite/g++.dg/ext/is_enum.C                     |  1 +
 gcc/testsuite/g++.dg/ext/is_pod.C                      |  1 +
 gcc/testsuite/g++.dg/ext/is_polymorphic.C              |  1 +
 gcc/testsuite/g++.dg/ext/is_union.C                    |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type10.C           |  1 +
 gcc/testsuite/g++.dg/ext/underlying_type4.C            |  1 +
 gcc/testsuite/g++.dg/inherit/virtual8.C                |  1 +
 gcc/testsuite/g++.dg/init/array4.C                     |  1 +
 gcc/testsuite/g++.dg/init/new18.C                      |  1 +
 gcc/testsuite/g++.dg/init/new39.C                      |  1 +
 gcc/testsuite/g++.dg/init/new40.C                      |  1 +
 gcc/testsuite/g++.dg/ipa/devirt-29.C                   |  1 +
 gcc/testsuite/g++.dg/ipa/pr85549.C                     |  1 +
 gcc/testsuite/g++.dg/lookup/missing-std-include-3.C    |  1 +
 gcc/testsuite/g++.dg/lookup/pr21802.C                  |  1 +
 gcc/testsuite/g++.dg/lto/20091022-2_0.C                |  1 +
 gcc/testsuite/g++.dg/lto/20091219_0.C                  |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_0.C                   |  1 +
 gcc/testsuite/g++.dg/lto/pr89358_1.C                   |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_a.H             |  1 +
 gcc/testsuite/g++.dg/modules/binding-1_b.H             |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-1_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-2_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-3_b.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_a.C           |  1 +
 gcc/testsuite/g++.dg/modules/contracts-4_d.C           |  1 +
 gcc/testsuite/g++.dg/modules/global-3_a.C              |  1 +
 gcc/testsuite/g++.dg/modules/hello-1_a.C               |  1 +
 gcc/testsuite/g++.dg/modules/iostream-1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/part-5_c.C                |  1 +
 gcc/testsuite/g++.dg/modules/string-1_a.H              |  1 +
 gcc/testsuite/g++.dg/modules/string-1_b.C              |  1 +
 gcc/testsuite/g++.dg/modules/string-view1.C            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C       |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_a.H         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-header_b.C         |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H            |  1 +
 gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C            |  1 +
 gcc/testsuite/g++.dg/opt/dtor4-aux.cc                  |  1 +
 gcc/testsuite/g++.dg/opt/dtor4.C                       |  1 +
 gcc/testsuite/g++.dg/opt/eh4.C                         |  1 +
 gcc/testsuite/g++.dg/opt/nrv17.C                       |  1 +
 gcc/testsuite/g++.dg/opt/pr102970.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr109434.C                    |  1 +
 gcc/testsuite/g++.dg/opt/pr15551.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr30965.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr77844.C                     |  1 +
 gcc/testsuite/g++.dg/opt/pr85393.C                     |  1 +
 gcc/testsuite/g++.dg/opt/reload3.C                     |  1 +
 gcc/testsuite/g++.dg/other/final7.C                    |  1 +
 gcc/testsuite/g++.dg/other/pr40561.C                   |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1-utf8.C              |  1 +
 gcc/testsuite/g++.dg/other/ucnid-1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/lookup1.C                   |  1 +
 gcc/testsuite/g++.dg/parse/parse5.C                    |  1 +
 gcc/testsuite/g++.dg/pch/system-1.C                    |  2 ++
 gcc/testsuite/g++.dg/pch/system-2.C                    |  2 ++
 gcc/testsuite/g++.dg/pr100253.C                        |  1 +
 gcc/testsuite/g++.dg/pr104547.C                        |  1 +
 gcc/testsuite/g++.dg/pr107087.C                        |  1 +
 gcc/testsuite/g++.dg/pr71488.C                         |  1 +
 gcc/testsuite/g++.dg/pr71655.C                         |  1 +
 gcc/testsuite/g++.dg/pr79095-3.C                       |  1 +
 gcc/testsuite/g++.dg/pr83239.C                         |  1 +
 gcc/testsuite/g++.dg/pr99966.C                         |  1 +
 gcc/testsuite/g++.dg/rtti/typeid4.C                    |  1 +
 gcc/testsuite/g++.dg/spellcheck-inttypes.C             |  1 +
 gcc/testsuite/g++.dg/template/friend10.C               |  1 +
 gcc/testsuite/g++.dg/template/pr69961a.C               |  1 +
 gcc/testsuite/g++.dg/template/show-template-tree-3.C   |  1 +
 gcc/testsuite/g++.dg/torture/alias-1.C                 |  1 +
 gcc/testsuite/g++.dg/torture/builtin-location.C        |  1 +
 gcc/testsuite/g++.dg/torture/pr103669.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr104601.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr106922.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr111019.C                |  1 +
 gcc/testsuite/g++.dg/torture/pr33572.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr33735.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr34099.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr39417.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr44972.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr46364.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49628.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr49938.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr51903.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr54498.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr60750.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr67600.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr82084.C                 |  1 +
 gcc/testsuite/g++.dg/torture/pr95493-1.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C         |  1 +
 gcc/testsuite/g++.dg/tree-ssa/empty-loop.C             |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C          |  1 +
 gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C      |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr101839.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr104529.C               |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr14703.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr19786.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr46228.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr63841.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr69336.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr78847.C                |  1 +
 gcc/testsuite/g++.dg/tree-ssa/pr95638.C                |  1 +
 gcc/testsuite/g++.dg/warn/Warray-bounds-27.C           |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference10.C      |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference4.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wdangling-reference5.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C     |  3 ++-
 gcc/testsuite/g++.dg/warn/Winline-3.C                  |  1 +
 gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C          |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C      |  1 +
 .../g++.dg/warn/Wstrict-aliasing-bogus-escape.C        |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C       |  3 ++-
 gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C       |  1 +
 gcc/testsuite/g++.dg/warn/Wuninitialized-33.C          |  1 +
 gcc/testsuite/g++.dg/warn/format1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/noreturn-1.C                 |  1 +
 gcc/testsuite/g++.dg/warn/string1.C                    |  1 +
 gcc/testsuite/g++.dg/warn/uninit-pr105562.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.benjamin/15071.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/copy9.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash15.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash20.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash30.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash38.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash39.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash49.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash52.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/crash62.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/nest21.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template24.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/template31.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.jason/typeid1.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg1.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arg8.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm12.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/arm9.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/bad-error7.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/code-gen5.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors10.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors12.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors13.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors17.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/ctors6.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt16.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/cvt7.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.law/except5.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.law/missed-error2.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.law/nest3.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators32.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/operators4.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.law/vbase1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.law/virtual3.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility1.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility10.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility13.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility17.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility22.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility25.C      |  1 +
 gcc/testsuite/g++.old-deja/g++.law/visibility7.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.martin/new1.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh13.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/eh2.C              |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net34.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/net46.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/p658.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.mike/rtti1.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using4.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.ns/using6.C             |  1 +
 gcc/testsuite/g++.old-deja/g++.other/defarg6.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/headers1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/init9.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline14.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline2.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline7.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/inline8.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.other/optimize2.C       |  1 +
 gcc/testsuite/g++.old-deja/g++.other/sibcall1.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.other/unchanging1.C     |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/crash68.C            |  1 +
 gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb109.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb113.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb115.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb124.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb127.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C        |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb130.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb132.C         |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb15.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb21.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb24.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb27.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb28.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb29.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb3.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb30.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb31.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb33.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb36.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb39.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb4.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb41.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb43.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb44.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb46.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb54.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb55.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb59.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb60.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb62.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb66.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb7.C           |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb73.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb77.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.robertl/eb79.C          |  1 +
 gcc/testsuite/g++.old-deja/g++.warn/iomanip.C          |  1 +
 gcc/testsuite/lib/target-supports.exp                  | 18 ++++++++++++++++++
 559 files changed, 584 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c20af31c6423..5cd53d7b56de 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2700,6 +2700,10 @@ Target is @samp{freestanding} as defined in section 4 of the C99 standard.
 Effectively, it is a target which supports no extra headers or libraries
 other than what is considered essential.
 
+@item hostedlib
+Target is not @samp{freestanding}, and, if the language is C++,
+@code{libstdc++}'s hosted mode is not disabled.
+
 @item gettimeofday
 Target supports @code{gettimeofday}.
 
diff --git a/gcc/testsuite/c-c++-common/pr36513-2.c b/gcc/testsuite/c-c++-common/pr36513-2.c
index d81c81dd4da0..f2e13227447b 100644
--- a/gcc/testsuite/c-c++-common/pr36513-2.c
+++ b/gcc/testsuite/c-c++-common/pr36513-2.c
@@ -1,6 +1,7 @@
 /* PR 36513: -Wlogical-op warns about strchr */
 /* { dg-do compile } */
 /* { dg-options "-Wlogical-op" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 #ifdef __cplusplus
 #include <cstring>
 #else 
diff --git a/gcc/testsuite/g++.dg/analyzer/pr93212.C b/gcc/testsuite/g++.dg/analyzer/pr93212.C
index 1029e8d547ba..0c7c134d262a 100644
--- a/gcc/testsuite/g++.dg/analyzer/pr93212.C
+++ b/gcc/testsuite/g++.dg/analyzer/pr93212.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 auto lol()
diff --git a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
index 46b68e529e6a..ba2ac652449d 100644
--- a/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
+++ b/gcc/testsuite/g++.dg/analyzer/vfunc-2.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/concepts/expression.C b/gcc/testsuite/g++.dg/concepts/expression.C
index 3da0c962888a..c2be18ae15ec 100644
--- a/gcc/testsuite/g++.dg/concepts/expression.C
+++ b/gcc/testsuite/g++.dg/concepts/expression.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // TODO: ICE on gimplify 16?
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn3.C b/gcc/testsuite/g++.dg/concepts/fn3.C
index 3e076f62ee88..793ff6693db3 100644
--- a/gcc/testsuite/g++.dg/concepts/fn3.C
+++ b/gcc/testsuite/g++.dg/concepts/fn3.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/fn9.C b/gcc/testsuite/g++.dg/concepts/fn9.C
index 51edd2fc539d..8b0dee762e86 100644
--- a/gcc/testsuite/g++.dg/concepts/fn9.C
+++ b/gcc/testsuite/g++.dg/concepts/fn9.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/concepts/generic-fn.C b/gcc/testsuite/g++.dg/concepts/generic-fn.C
index 983b37092f8f..0ffd30c8a012 100644
--- a/gcc/testsuite/g++.dg/concepts/generic-fn.C
+++ b/gcc/testsuite/g++.dg/concepts/generic-fn.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <type_traits>
diff --git a/gcc/testsuite/g++.dg/concepts/intro2.C b/gcc/testsuite/g++.dg/concepts/intro2.C
index 5c6906c8d352..35911c6e5e20 100644
--- a/gcc/testsuite/g++.dg/concepts/intro2.C
+++ b/gcc/testsuite/g++.dg/concepts/intro2.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17_only } }
 // { dg-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-access1.C b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
index fdad7b1763c0..7af28e45e229 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-access1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-access1.C
@@ -2,6 +2,7 @@
 // members of the current and base classes
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 struct Base
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
index 3323244fefb6..8b2f7218d1e2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume2.C
@@ -10,6 +10,7 @@
 // main -- unlike contracts-ignore2 which expects a failing return code
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:never,assume,ignore -O1" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
index 8dad6bb562e5..ae6845a3c48a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume3.C
@@ -2,6 +2,7 @@
 // a link failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int t);
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
index 7954f5316121..6d06403a5c9f 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-assume4.C
@@ -2,6 +2,7 @@
 // not cause constexpr eval failure
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int f(int t); // { dg-warning "used but never defined" }
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-config1.C b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
index 2f4fa3df6e15..fa702d5e1b08 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-config1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-config1.C
@@ -2,6 +2,7 @@
 // contract configurations is correct.
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int fun(int n)
   [[ post default r: r > 0 ]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
index 9d0233ba9d7e..0bf004f309c1 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
@@ -2,6 +2,7 @@
 // ensure that failing pre/post generate an error at runtime in constexpr funcs
 // { dg-do run }
 // { dg-options "-std=c++20 -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int wfun(int a)
   [[ pre: a > 0 ]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
index e67ba36a93e3..042a9c0b437e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
@@ -1,6 +1,7 @@
 // check that contracts work around deduced return types
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 auto g0(int a) [[ pre: a < 0 ]] [[ post r: r > 0 ]]
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-externC.C b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
index 873056b742bb..f27eb4365d8c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-externC.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-externC.C
@@ -2,6 +2,7 @@
 // when wrapping functions in pre- and postconditions.
 // { dg-do link }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 volatile int x = 10;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
index 28e269ffce9a..f48a12d8341a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-friend1.C
@@ -1,6 +1,7 @@
 // ensure contracts on friend declarations are a complete class context
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 struct X {
   friend void fn0(X x) [[ pre: x.a > 0 ]] { }
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
index 5cf800a35595..c085852a3f28 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
@@ -2,6 +2,7 @@
 // assumptions; see contracts-assume2 for the assumed case
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int fun(int x) {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
index c58747724f5a..ec6b2c9dd91c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main(int, char **)
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
index 43e75edbef80..f058938ee8fd 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 void gfn3(int n) [[ pre: n > 0 ]];
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post2.C b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
index 7665f8291070..5255d2b83c32 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post2.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r == n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-post3.C b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
index 129232827960..38f9e64d5d84 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-post3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-post3.C
@@ -2,6 +2,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function f1" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f1(int n)
   [[post r: r > n]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
index fe855661b97b..d0d563333597 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre10.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 struct M
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
index d63d0712ff91..c7441dcda708 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2.C
@@ -1,6 +1,7 @@
 // basic test to ensure pre contracts work for free functions
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 namespace nullary
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
index f4319bf1bff4..e692cde53bdd 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
@@ -1,6 +1,7 @@
 // basic test to ensure contracts work pre-c++2a
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int f(int n)
   [[ pre: n > 0 ]]
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
index 70df31864f98..e789186ced8a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre3.C
@@ -1,6 +1,7 @@
 // tests to ensure pre contracts work on member functions
 // { dg-do compile }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 namespace member
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
index ec26c02bff3d..376df745d664 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre4.C
@@ -1,6 +1,7 @@
 // test that contracts on overriding functions are found correctly
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 struct Base
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
index 5030cec3c3cd..cadab449d024 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre5.C
@@ -1,6 +1,7 @@
 // basic test to ensure pre contracts work for free templates
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
index 715a2c692cb0..5c7756a81125 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre7.C
@@ -2,6 +2,7 @@
 // unchecked function after leaving a (possibly nested) namespace
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 namespace ns0
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
index 4613be4e9471..879c7f8fc2b0 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-pre9.C
@@ -2,6 +2,7 @@
 // with guarded members
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 template<typename T>
 struct S
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
index ef6b1236ded6..90c08393ff0a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
@@ -1,6 +1,7 @@
 // basic test to ensure contracts generalized redecl works
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 namespace defining
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
index e0a0c696f73c..9e82c6cf9318 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
@@ -2,6 +2,7 @@
 // normal default parm handling
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int f(int a, int, int c = 10);
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
index 131f039e406e..18056a0e387e 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
@@ -1,6 +1,7 @@
 // basic test to ensure contracts generalized redecl works
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 namespace defining
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
index b7999b4bd7bb..c3aaab139bdb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
@@ -1,6 +1,7 @@
 // test that contracts can be added during (defining) friend declarations
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 struct T;
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
index 1460b93479eb..b3e382105014 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
@@ -1,6 +1,7 @@
 // basic test to ensure pre contracts work for free template specializations
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
index 82117671b2d3..85ee1eeeab6c 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
@@ -1,6 +1,7 @@
 // basic test to ensure contracts work for class and member specializations
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 // template specializations can have differing contracts
diff --git a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
index 090c1349f98d..cf07196ba883 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 template<typename T, typename S>
diff --git a/gcc/testsuite/g++.dg/contracts/contracts10.C b/gcc/testsuite/g++.dg/contracts/contracts10.C
index 585af9918df4..1860bee0499d 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts10.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts10.C
@@ -4,6 +4,7 @@
 // predicate, and contract level are included in the violation_info object
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 namespace tns
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C
index d9156d6875dd..e9b27911ffc8 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts14.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts14.C
@@ -2,6 +2,7 @@
 // are catchable up the call stack
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <experimental/contract>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C
index ef52a0e67f03..5a6b7f45d5bf 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts15.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts15.C
@@ -2,6 +2,7 @@
 // are not catchable up the call stack when failing in a noexcept function
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <experimental/contract>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C
index 5d58ab8eaa15..a4e1af5ec5c3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts16.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts16.C
@@ -2,6 +2,7 @@
 // are not catchable up the call stack even when continue mode is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <experimental/contract>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts17.C b/gcc/testsuite/g++.dg/contracts/contracts17.C
index f2db43346e4e..4a97db96d014 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts17.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts17.C
@@ -3,6 +3,7 @@
 // assert fails in a noexcept function
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <experimental/contract>
 
diff --git a/gcc/testsuite/g++.dg/contracts/contracts18.C b/gcc/testsuite/g++.dg/contracts/contracts18.C
index e8163ba4ab2d..1676ea458a70 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts18.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts18.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:never,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts19.C b/gcc/testsuite/g++.dg/contracts/contracts19.C
index 009942de967e..7b168cfa4dcb 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts19.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts19.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-role=custom:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts2.C b/gcc/testsuite/g++.dg/contracts/contracts2.C
index 9535e077d361..0de587e86063 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts2.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts2.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts22.C b/gcc/testsuite/g++.dg/contracts/contracts22.C
index 91e32b9d9b25..df71f924c5f2 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts22.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts22.C
@@ -3,6 +3,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-mode=off" }
 // { dg-output "returning from main" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 int constexpr f()
diff --git a/gcc/testsuite/g++.dg/contracts/contracts24.C b/gcc/testsuite/g++.dg/contracts/contracts24.C
index 70a54f95a937..0157097f3ba5 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts24.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts24.C
@@ -3,6 +3,7 @@
 //   (axiom level contracts are never checked at runtime)
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-semantic=default:never -fcontract-semantic=audit:ignore -fcontract-semantic=axiom:ignore" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts25.C b/gcc/testsuite/g++.dg/contracts/contracts25.C
index e954cd1389b2..b1dbc8bb088a 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts25.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts25.C
@@ -2,6 +2,7 @@
 // ensure that failing asserts generate an error at runtime in constexpr funcs
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 constexpr int wfun(int a) {
   [[assert: a > 0]];
diff --git a/gcc/testsuite/g++.dg/contracts/contracts3.C b/gcc/testsuite/g++.dg/contracts/contracts3.C
index 73dc7a155440..5efa4c0b58f3 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts3.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts3.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts35.C b/gcc/testsuite/g++.dg/contracts/contracts35.C
index 4435ab78e506..2c3dd31ba4fd 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts35.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts35.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <cstdio>
 
 struct S
diff --git a/gcc/testsuite/g++.dg/contracts/contracts4.C b/gcc/testsuite/g++.dg/contracts/contracts4.C
index a43fb9f98e26..d3231e50c332 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts4.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts4.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is default
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts5.C b/gcc/testsuite/g++.dg/contracts/contracts5.C
index 3c591833bf19..ecd854a4dc68 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts5.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts5.C
@@ -4,6 +4,7 @@
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=audit" }
 // { dg-shouldfail "assert violation" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts6.C b/gcc/testsuite/g++.dg/contracts/contracts6.C
index 59c010e5d390..42622fd2e186 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts6.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts6.C
@@ -2,6 +2,7 @@
 // error during runtime when the contract build level is off
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-build-level=off" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts7.C b/gcc/testsuite/g++.dg/contracts/contracts7.C
index 9e7cae9433ef..0828f8274b30 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts7.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts7.C
@@ -5,6 +5,7 @@
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
 // { dg-output "contract violation in function main" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 int main()
 {
diff --git a/gcc/testsuite/g++.dg/contracts/contracts9.C b/gcc/testsuite/g++.dg/contracts/contracts9.C
index 09a1a6532c5a..37a2c6e68554 100644
--- a/gcc/testsuite/g++.dg/contracts/contracts9.C
+++ b/gcc/testsuite/g++.dg/contracts/contracts9.C
@@ -4,6 +4,7 @@
 // ensure that template functions can be used as assert predicates
 // { dg-do run }
 // { dg-options "-std=c++2a -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for stdc++exp" { ! hostedlib } }
 
 template<typename T>
 int fun1(int a, T b)
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100611.C b/gcc/testsuite/g++.dg/coroutines/pr100611.C
index 14edf4870a14..9f0228e098cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100611.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100611.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not
   get 'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
index 4ef80a995949..5ffd3a427c10 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr100772-b.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #if !__has_include(<coroutine>) \
   && __has_include(<experimental/coroutine>) // for __clang__
 #include <experimental/coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101133.C b/gcc/testsuite/g++.dg/coroutines/pr101133.C
index 6c6bc163251c..5bc9103897cb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101133.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101133.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <coroutine>
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101367.C b/gcc/testsuite/g++.dg/coroutines/pr101367.C
index 0a9e5bee7d17..435190eca7dd 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101367.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101367.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <coroutine>
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101765.C b/gcc/testsuite/g++.dg/coroutines/pr101765.C
index 49a49d112995..4a35c1c55f6b 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101765.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101765.C
@@ -1,6 +1,7 @@
 // We cannot compile this yet, much run it - but one day it might be
 // feasible, so do the minimum for now.
 // { dg-additional-options " -fsyntax-only -Wno-vla" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr101976.C b/gcc/testsuite/g++.dg/coroutines/pr101976.C
index 1854ba001bb3..53d02a4c4e03 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr101976.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr101976.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /*
   Test that members of temporary instances in co_await statements do not get
diff --git a/gcc/testsuite/g++.dg/coroutines/pr102454.C b/gcc/testsuite/g++.dg/coroutines/pr102454.C
index 41aeda7b9735..9cb59dbc1943 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr102454.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr102454.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-fno-exceptions" }
+//  { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <coroutine>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr104051.C b/gcc/testsuite/g++.dg/coroutines/pr104051.C
index ce7ae55405a6..f77a915af745 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr104051.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr104051.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fsyntax-only" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <coroutine>
 #include <vector>
 template <typename> struct promise {
diff --git a/gcc/testsuite/g++.dg/coroutines/pr94288.C b/gcc/testsuite/g++.dg/coroutines/pr94288.C
index 2557e3e0f2bb..61424aee99bb 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr94288.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr94288.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options  "-w" }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95477.C b/gcc/testsuite/g++.dg/coroutines/pr95477.C
index 7050aee00781..38fb5c80b072 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95477.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95477.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95520.C b/gcc/testsuite/g++.dg/coroutines/pr95520.C
index 4849b0789c7f..9776ec57911e 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95520.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95520.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-output "coroutine name: MyFoo" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95599.C b/gcc/testsuite/g++.dg/coroutines/pr95599.C
index ec97a4aa1651..e94bf7d9752c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95599.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95599.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95711.C b/gcc/testsuite/g++.dg/coroutines/pr95711.C
index 682a221509ea..ba663ec1544c 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95711.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95711.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #if __has_include(<coroutine>)
 #include <coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr95736.C b/gcc/testsuite/g++.dg/coroutines/pr95736.C
index 0be5168a8d22..55f52bf4e863 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr95736.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr95736.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <exception>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr97587.C b/gcc/testsuite/g++.dg/coroutines/pr97587.C
index 081c3a94b3c0..03da6c309236 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr97587.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr97587.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<coroutine>
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
index 612f0cda2b18..01db4d21424f 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that instances created in capture clauses within co_await statements do not get
   'promoted'. This would lead to their members destructors getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
index b7371d64480e..cd3da6426e23 100644
--- a/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
+++ b/gcc/testsuite/g++.dg/coroutines/pr99576_2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /*
   Test that members of temporary awaitables in co_await statements do not get
   'promoted'. This would lead to the members destructor getting called more
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
index c6e445e0529a..fcea6f9975f8 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
index d0e5d1f3c7f5..2ab457abd94c 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
@@ -1,4 +1,5 @@
 //  { dg-options "-fcoroutines -std=c++14" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
index e030ca1b7aeb..0992924b4343 100644
--- a/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
+++ b/gcc/testsuite/g++.dg/coroutines/ramp-return-c.C
@@ -1,4 +1,5 @@
 //  { dg-additional-options "-std=c++17" }
+//  { dg-skip-if "requires hosted libstdc++ for vector in ramp-return.h" { ! hostedlib } }
 #define DELETE_COPY_CTOR 1
 #include "ramp-return.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
index ca07a3a03d00..72ba97c5ac47 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-00-gro-on-alloc-fail.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    Here we use an allocator that doesn't fail so that the code
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
index 98babcaf4f4b..0e7c8555fc95 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-01-overload-newdel.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check codegen for overloaded simple operator new/delete.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
index 7911cc8c43df..61e19bd07272 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check the code-gen for the failed alloc return.
    In this case, we use an operator new that always fails.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
index b1d6743fd912..3ae446fecf6b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check codegen for overloaded simple operator new/delete.
    here check that we prefer the overload that accounts the function
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
index 2987c6ef116f..a6b48729a56b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* check that we use the deallocation function with two args when both
    are available.  */
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
index 19e3ec1fe687..f86bbc78871d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use co_await as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
index 573f4f86a522..29ba751d4272 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we can use multiple co_awaits as a call parm.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
index 8ae07aa7a456..322cde107a61 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
index 967cb1b9baa1..f42c96af2821 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check  foo (compiler temp, co_await).
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
index 932fe4b2830f..bce831e98b7e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest class.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
index 0bd477044b4c..b9398e858c7d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Class with parm capture
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
index 0cc6069c32f6..02ad0faa8c07 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
index 2d888a745586..e91f068efd2d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-03-operator-templ-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
index e191c20ac061..9c776289b99e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-04-lambda-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
index 9bb76d246c3b..1f7e2a63f958 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
index db60132b0eed..33dde7914e2a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // template parm in a class
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
index 00a0df69758e..86d946c7b357 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Show that we are correctly accessing class variables.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
index 6de751af53c1..0f09162ae7d2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // The simplest co_await we can do.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
index ddff64530b3d..070a05ac178e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
index 8d32c73503f9..74f1a10c1fb0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of basic await transform, no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
index 29dcc5f7a2cd..3fb8167115bc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of co_await with an expression to await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
index fd201f904816..e3f6ee436cbe 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of await transform.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
index 58cdced7313f..33716288c2ef 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check correct operation of co_await in a loop without local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
index a3f7fa0083b6..4cb8eb7ea4e7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
index 8915786dd1ef..27358cb95109 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we correctly operate when the coroutine object is templated.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
index 51eedc57421e..a3efa473b698 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check cascaded co_await operations.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
index e3aba4d56ef8..fc4ce7c62d3e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
index 71a5b18c3ccb..3e4fe3662f11 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
index 6e59c88447b1..1ff4eb09e206 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test of forwarding a templated awaitable to co_await.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
index 91dd1927bfd0..4b3e9334f3db 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic check of the co_await operator overload.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
index 78f2d5b9d1b9..12e6c0637776 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
index 6b1d5bf5a436..3d133ce2aa9f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* The simplest valued co_await we can do.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
index 70c974bc56a6..e79d9da6b64d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 /* Check that we handle await_resume for a non-trivial type.  */
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
index 4e670b1c308a..8be2597fffbb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
@@ -1,4 +1,5 @@
 //  { dg-do compile }
+//  { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 //  Test we create co_await_expr with dependent type rather than type of awaitable class
 
 #include "../coro.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
index 3eefe9e775da..5a7b9fd07616 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run { target c++17 } }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
index 6b05cfb44acd..3c5436028023 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-18-if-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in if condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
index 2cd37616aaa4..1b7f09d93e5e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-19-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
index bb1e97a6ef06..d4743e2a548b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-20-do-while-cond.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in do-while conditional
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
index b5e1bf38050e..beaf12f4782b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-21-switch-value.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
index 54659741cbed..dee0a99c4b3b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-22-truth-and-of-if.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
index 1bf2f6d912de..45ea0de74301 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-24-for-init.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
index 2208e3415746..08d17a5e8891 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-25-for-condition.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
index f361fb5ecea2..b4ee6acf06e6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-await-26-for-iteration-expr.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co-await in while condition.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
index dd0a3b749aac..016db878ad51 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-00-void-return-is-ready.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "never", so that the co-
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
index 1f4c3debc03b..2f388b5f5326 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-01-void-return-is-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Basic functionality check, co_return.
 // Here we check the case that initial suspend is "always".
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
index 1a095c627ea3..871307d3b194 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-03-different-GRO-type.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from the eventual return type.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
index abb789aa7aec..928193ac8437 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-04-GRO-nontriv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // GRO differs from eventual return type and has non-trivial dtor.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
index 42b80ff6bb61..dbf5c973fe32 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-05-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
index 91f591a30fc5..0a8b90063a4c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-06-template-promise-val-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning a T.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
index b1a06f284958..8eedbfac6f17 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-07-void-cast-expr.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return (void)expression;" evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
index ac4cca49e980..c05806e31ef2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-08-template-cast-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test templated co-return.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
index 33683226f632..98a822189a5f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-09-bool-await-susp.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // test boolean return from await_suspend ().
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
index 7b07be5f4482..90d99efdd34b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-10-expression-evaluates-once.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that "co_return expression;" only evaluates expression once.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
index 06939107d800..f69a99a3f996 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-11-co-ret-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
index 50124c080b33..516b89bc6e17 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-12-co-ret-fun-co-await.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return function (co_await)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
index 9d4a4de8ebe8..f3aee4977309 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-13-template-2.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
index ebc1adba821f..3dfa6caa66ec 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-14-template-3.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
index 300052c94ae7..81a7da276ac6 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-15-default-return_void.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 //
 // Check if default return_void is insert at correct position.
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
index 112aa57ca61e..d7bd00e02423 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-16-simple-control-flow.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test returning an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
index 9c9d2fa816dd..6625e4476cb9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-ret-17-void-ret-coro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test the ability to specialize the coroutine traits to include
 // non-class type coroutine ramp return values.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
index 15e390ed2008..3d88c37ed57f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-00-triv.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
index 5df69c7f1567..e1c5fba294df 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-01-multi.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test yielding an int.
 // We will use the promise to contain this to avoid having to include
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
index 8d4f1d5d8236..f21e30495731 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-02-loop.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in a loop with no local state.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
index 45fc8d71a079..005423fa69b4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-03-tmpl.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test co_yield in templated code.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
index f97bd2377f7b..f4b1b9f55ad8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-04-complex-local-state.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // using non-trivial types in the coro.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
index 043f97b6e1b3..bf2f91017021 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-05-co-aw.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
index c74e44d15d52..9cf148b76838 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-06-fun-parm.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
index 74dae6339556..ab392a2a105f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-07-template-fn-param.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check type dependent function parms. 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
index 8e39127a1ae7..d2a82bf44103 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-08-more-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
index 3abbe1c43abb..943c869a58b5 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/co-yield-09-more-templ-refs.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check co_return co_await 
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
index 85135fc50c42..42480a03b88c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
index 6433b62109fc..e4303dab6a21 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test exceptions in the initial await expression, per n4849.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
index c178a80ee4b5..c28a641bc2ad 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
+
 #include <coroutine>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
index b5716972d479..7fb169a6c7d4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test promise construction from function args list.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
index f530431a6bba..5459d2a4e494 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest test that we correctly handle function params in the body
 // of the coroutine.  No local state, just the parm.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
index 396b438cb2d9..a9b99ca49393 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we correctly re-write multiple uses of a function param
 // in the body.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
index bf699722a1ab..6fc801ff2993 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
index c90c1525e401..a8189f4c40e8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param copy.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
index 8bdb2b5d0f78..b853d97bfefb 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can manage a constructed param reference
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
index cbcfe67ff1af..6953dcb46ed2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-06.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // check references are handled as expected.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
index 7f3bb3cc7825..03044ef4b314 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-07.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we copy simple parms correctly by value, reference or
 // rvalue reference.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
index cce1521b2260..20f407d30cce 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-08.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
index 81430bf4d546..d852666925b1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/func-params-09-awaitable-parms.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Check that we correctly handle params with non-trivial DTORs and
 // use the correct copy/move CTORs.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
index 61e284d5c8f5..7b77cecec645 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-00-co-ret.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest lambda
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
index 378eedc6d89d..925f1d0d5850 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-01-co-ret-parm.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Lambda with parm
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
index a6f592cd77af..20609ce831e0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-02-co-yield-values.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
index bfa5400225da..9c8ddf2a9925 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-03-auto-parm-1.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with auto parm (c++14)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
index adf31e22dbac..ec8a9940d3a9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-04-templ-parm.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-std=c++2a" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // generic Lambda with template parm (from c++20)
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
index 7cd6648cca69..04dcfa26458f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-05-capture-copy-local.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
index 7b445d3d9cd0..c2f2e93dc669 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-06-multi-capture.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
index 2bd58cbf2ec4..bc97507372ce 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-07-multi-yield.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with parm and local state
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
index 4d5a44fe29a4..bfce44f0c9e2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-08-co-ret-parm-ref.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test that we can use a function param in a co_xxxx status.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
index 920d6eaac82b..ae7d9fa84c73 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-09-init-captures.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with initialized captures
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
index a10816ccd845..a7fa4c7a21fa 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/lambda-10-mutable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // lambda with mutable closure object.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
index a8956457dcd3..f6c44e9278de 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-00-const.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local decl.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
index 69a5b707563c..cd35d978814c 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-01-single.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Simplest local var
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
index f232edabdae4..90aa008227bc 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-02-conditional.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test local vars in nested scopes
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
index bd06db53d483..f4209ab48d48 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-03-with-awaits.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var and yielding several instances of it.
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
index 419eb6b64673..b4c3f49bd59a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Test modifying a local var across nested scopes containing vars
 // hiding those at outer scopes.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
index 7ea00434c873..e7a8491ab1a4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Test the case where the awaitables are local vars, and therefore already
 // have a frame representation - and should not be copied to a second frame
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
index 282aa7a7cac5..462ab51a755a 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
index 0cbf93ad8aff..60852bb10a11 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
@@ -3,6 +3,7 @@
 // { dg-output "Destroyed coro1(\n|\r\n|\r)" }
 // { dg-output "Destroyed suspend_always_prt(\n|\r\n|\r)" }
 // { dg-output "Destroyed Promise(\n|\r\n|\r)" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Check that we still get the right DTORs run when we let a suspended coro
 // go out of scope.
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
index 9022dd2b1edd..ada827e267df 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 #include "../coro1-ret-int-yield-int.h"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
index 2952d0116749..5d40ed414c4d 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
index 346c20dbd8ff..deb5a2275dc1 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
index 4200c333ee3d..f1793b17624f 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
index cf4c43d1a90d..093d4f70b75e 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-03-return-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
index 5f1be4e00f4f..910be6bdc7f7 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-04-yield-value.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
index 2e7218371bc0..28ecb32e463b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-05-gro.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
index b6b6bd73c9aa..ebea8d3513b4 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-06-grooaf.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
index be2a928ea00e..3b9149ca17d9 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95519-07-unhandled-exception.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include "../coro.h"
 
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
index cf30c82be5ed..baae030c97d0 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-01.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
index 7ec0f33f4859..504c8b99f8c8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-02.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define PROMISE_CTOR_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
index 8053335428e8..90b6395c7934 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-03.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define GET_RETURN_OBJECT_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
index db5c1285f9a0..1b7f89f815d2 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-04.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_READY_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
index 5fd62f67be45..1d302c88226b 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr95615-05.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for cassert in pr95615.inc" { ! hostedlib } }
 
 #define INITIAL_AWAIT_SUSPEND_THROWS 1
 #include "pr95615.inc"
diff --git a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
index 15db250b4a20..fc914c63ced8 100644
--- a/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
+++ b/gcc/testsuite/g++.dg/coroutines/torture/pr98704.C
@@ -1,4 +1,5 @@
 //  { dg-do run }
+//  { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include "../coro.h"
 
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
index b9b975b5dc2f..bfa3c9e542fc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Make sure -Wliteral-suffix is enabled by default and
 // triggers as expected.
diff --git a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
index 0ee6e0535dcb..bec6c7ba4c7d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
@@ -1,6 +1,7 @@
 // PR c++/86981
 // { dg-do compile { target c++11 } }
 // { dg-options "-Wpessimizing-move" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
index 12c4c453e1af..53287b173e8b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-70001-3.C
@@ -2,6 +2,7 @@
 
 // This is still slow to compile, only run it once.
 // { dg-do compile { target c++14_only } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <array>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
index 112415b655bf..fd55e08ce5a3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
+++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice16.C
@@ -1,5 +1,6 @@
 // PR c++/66635
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/dc5.C b/gcc/testsuite/g++.dg/cpp0x/dc5.C
index 57321626e912..e4bdfd1a3a25 100644
--- a/gcc/testsuite/g++.dg/cpp0x/dc5.C
+++ b/gcc/testsuite/g++.dg/cpp0x/dc5.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum35.C b/gcc/testsuite/g++.dg/cpp0x/enum35.C
index bcc1b26b3900..126fc7f1b027 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum35.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum35.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/enum36.C b/gcc/testsuite/g++.dg/cpp0x/enum36.C
index 4859670309f8..e326942d9ebe 100644
--- a/gcc/testsuite/g++.dg/cpp0x/enum36.C
+++ b/gcc/testsuite/g++.dg/cpp0x/enum36.C
@@ -1,5 +1,6 @@
 // PR c++/82307
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
index 56de4bc00923..391b7c47d503 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/110102
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 // { dg-error "deleted|construct_at" "" { target *-*-* } 0 }
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
index eec7d340fd1f..eba0e171cd60 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
@@ -1,5 +1,6 @@
 // PR c++/108195
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
index bba226798ea3..2da89dcef79f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist13.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C
@@ -1,5 +1,6 @@
 // PR c++/39056
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist15.C b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
index acd04956b1bf..aaa01fb70353 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist15.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist15.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Just discard errors pointing at header files
 // { dg-prune-output "include" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist25.C b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
index dd41db1f641e..0e110c5c2cf6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist25.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist25.C
@@ -1,5 +1,6 @@
 // PR c++/41754
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist54.C b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
index 52a8ff94d991..b9dcd391f89a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist54.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist54.C
@@ -1,5 +1,6 @@
 // PR c++/49355
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist92.C b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
index 213b192d4411..85079123ccdd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/initlist92.C
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist92.C
@@ -1,5 +1,6 @@
 // PR c++/64665, DR 1467 
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
index 9c9632cd5165..9f7c7a860e83 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
index 16fd0a713a78..3668a77c1148 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-capture-const-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
index 28ea53363a57..e1c3dac26b69 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
index c6150f17456e..9c639bf2ba17 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
index b0e2d9fbabe1..26e681626e90 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-deduce.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
index cff3d3756826..40170899aed6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
index f2b54e58ad37..bfa04c41bdb6 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-in-class.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
index d3f434195ea9..e934e33582d1 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
index 2c6b0f206446..2471adc6efbf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
index 3848938d55f0..a0f1a475444e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
index b5a335eaf13e..66d8218cea3c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-non-const.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
index 4a04cfbfb589..c64e1800c3bd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nop.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 int main() {
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
index 1aadbb490dcb..b88b0eb6917b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nullptr.C
@@ -1,5 +1,6 @@
 // PR c++/54170
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert> 
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
index d904ebee16b7..5747766e8a31 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-pass.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
index cbaeb16201f6..f4b1c8ee9c03 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-recursive.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //#include <iostream>
 #include <functional>
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
index 6b86369dbf24..f0cc3c6b0bbc 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref-default.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
index def13fdd67b3..dbeaf2ca7725 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ref.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
index bbd0c7e24e3b..985f50221d29 100644
--- a/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
+++ b/gcc/testsuite/g++.dg/cpp0x/nullptr20.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 // Test passing to ellipisis
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr61038.C b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
index 6c7a47bae737..96aabe554b8a 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr61038.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr61038.C
@@ -1,5 +1,6 @@
 // PR c++/61038
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index 09732d17cdd3..c06a3e6078d9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // PR c++/33235
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
index 3093a7c055d1..95d49271b811 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
index d4f10c2973f2..208aaeea55de 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
index fef1a5342c99..27f7c990a124 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 //  Make sure embedded quotes are not a problem for string and char literals.
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
index d69db561b4ef..28732d86212e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-general.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
index 73298900b429..a2e4e414319d 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test simple operator declaration and definition in namespaces.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
index c3259ed9b434..9f57ac565968 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
index 7ca37b2a7f97..1991de1150f9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
index 19cbd519a86f..5a264c248330 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
@@ -1,4 +1,5 @@
 // { dg-options "-std=c++17 -fchar8_t" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
index c1ceef7577fc..c311cfb8db76 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cstdint>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
index e24b79d9f0bf..e69dd5a4255f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-sfinae.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
index ab65dd08714a..78e2b26d3bb8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++11 } }
 // { dg-require-effective-target stdint_types }
+// { dg-skip-if "requires hosted libstdc++ for string in udlit-string-literal.h" { ! hostedlib } }
 // PR c++/55582
 
 #include "udlit-string-literal.h"
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
index 7283fed9a356..8f3cc87825a4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
index 155831992977..b5306b9962fd 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-template.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test user-defined literals.
 // Test template operator declaration and definition.
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
index 74e01ec364c9..dd3b390ca631 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's bind using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
index bb98531c3878..1a5103ae36a2 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-function.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's function using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
index aca58e394615..7a707100613b 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-mem_fn.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // A basic implementation of TR1's mem_fn using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
index 5164598439b3..651618e3fd1e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // An implementation of TR1's <tuple> using variadic teplates
 // Contributed by Douglas Gregor <doug.gregor@gmail.com>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
index a9c163dd736c..203f80762b9b 100644
--- a/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
+++ b/gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
@@ -1,5 +1,6 @@
 // PR c++/69057
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
index 5ae2370c3ffd..3cedd0d401fc 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1.C
@@ -1,5 +1,6 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
index 9b61f3aa534f..a5d1e010f8df 100644
--- a/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
+++ b/gcc/testsuite/g++.dg/cpp1y/complex_literals1a.C
@@ -1,6 +1,7 @@
 // PR c++/79228
 // { dg-do compile { target c++14 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
index 3d742cfebd83..b463c9000812 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
index df2a31539ff0..66acfcc6db0d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
@@ -1,5 +1,6 @@
 // PR c++/59329
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
index a3291017324e..def05f5fb256 100644
--- a/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
@@ -1,5 +1,6 @@
 // PR c++/65985
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
index 318e0967250c..e73b86e4eb28 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
@@ -1,5 +1,6 @@
 // PR c++/69078
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
index 0926a5e363b8..723512f71f5d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-x.C
@@ -1,6 +1,7 @@
 // Explicit generic lambda test from N3690 5.1.2.5
 // { dg-do compile { target c++14 } }
 // { dg-options "-Wpedantic" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
index 21933bd3e1b1..7ccb01e3d4f5 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
@@ -1,5 +1,6 @@
 // DR1760: "no additional copy and destruction is performed"
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/new2.C b/gcc/testsuite/g++.dg/cpp1y/new2.C
index cdcbd7daf2b9..8756ce4cf59f 100644
--- a/gcc/testsuite/g++.dg/cpp1y/new2.C
+++ b/gcc/testsuite/g++.dg/cpp1y/new2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -std=c++17 -fdump-tree-cddce-details -fdelete-null-pointer-checks" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
index fcc1f50dd810..92a82fd322b4 100644
--- a/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
+++ b/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
@@ -1,5 +1,6 @@
 // PR c++/90926
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr57640.C b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
index 0c76a08aecc1..6a79ea239d68 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr57640.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr57640.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr77786.C b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
index e242228335cb..c1e2be708404 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr77786.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr77786.C
@@ -1,5 +1,6 @@
 // PR c++/77786
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr95226.C b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
index 614c83c8cdab..0808bd6a2312 100644
--- a/gcc/testsuite/g++.dg/cpp1y/pr95226.C
+++ b/gcc/testsuite/g++.dg/cpp1y/pr95226.C
@@ -1,5 +1,6 @@
 // PR c++/95226
 // { dg-do run { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
index b523858e9c09..f1cd1cc8b46d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-sfinae.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
index c5a67c96cf6b..babef5a25ecd 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-char-template-vs-std-literal-operator.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++14 } }
 // { dg-options -w }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
index cad4a1dfc664..c75e0169beab 100644
--- a/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
+++ b/gcc/testsuite/g++.dg/cpp1y/udlit-userdef-string.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for complex in complex_literals.h" { ! hostedlib } }
 
 #include "complex_literals.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
index ba2ba9bd1ec1..69bcd8f670ea 100644
--- a/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
+++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/decomp37.C b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
index 6bf81769b7ef..6e0e8b561c9f 100644
--- a/gcc/testsuite/g++.dg/cpp1z/decomp37.C
+++ b/gcc/testsuite/g++.dg/cpp1z/decomp37.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <memory>
 #include <tuple>
diff --git a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
index af26cb20744e..1be2af75ef59 100644
--- a/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
+++ b/gcc/testsuite/g++.dg/cpp1z/eval-order2.C
@@ -1,5 +1,6 @@
 // P0145R2: Refining Expression Order for C++
 // { dg-do run { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #define assert(X) if (!(X)) __builtin_abort();
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold1.C b/gcc/testsuite/g++.dg/cpp1z/fold1.C
index 6d004676707d..ee5f4840143c 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold1.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold1.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++17 } }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
index e1848aa5e4ab..95a4bea085bd 100644
--- a/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/init-statement6.C
@@ -1,5 +1,6 @@
 // Testcase from P0305R1
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder3.C b/gcc/testsuite/g++.dg/cpp1z/launder3.C
index 2a2afc5cad1e..909540035893 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder3.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder3.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder4.C b/gcc/testsuite/g++.dg/cpp1z/launder4.C
index 3a65eb27f2e8..d9698f8c1821 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder4.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder4.C
@@ -1,5 +1,6 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder5.C b/gcc/testsuite/g++.dg/cpp1z/launder5.C
index 483d6f292977..5bc97f63aff9 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder5.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder5.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder5.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include "launder5.h"
diff --git a/gcc/testsuite/g++.dg/cpp1z/launder6.C b/gcc/testsuite/g++.dg/cpp1z/launder6.C
index babc4b433ad7..e92b02cd5e2a 100644
--- a/gcc/testsuite/g++.dg/cpp1z/launder6.C
+++ b/gcc/testsuite/g++.dg/cpp1z/launder6.C
@@ -1,6 +1,7 @@
 // { dg-do run { target c++11 } }
 // { dg-additional-options "-O2" }
 // { dg-additional-sources "launder6.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include "launder6.h"
 
diff --git a/gcc/testsuite/g++.dg/cpp1z/utf8.C b/gcc/testsuite/g++.dg/cpp1z/utf8.C
index ed413f30976c..1d496a10370d 100644
--- a/gcc/testsuite/g++.dg/cpp1z/utf8.C
+++ b/gcc/testsuite/g++.dg/cpp1z/utf8.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++17 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <experimental/type_traits>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript5.C b/gcc/testsuite/g++.dg/cpp23/subscript5.C
index b36bc774ec4d..eac6a2457280 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript5.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript5.C
@@ -1,5 +1,6 @@
 // P2128R6
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp23/subscript6.C b/gcc/testsuite/g++.dg/cpp23/subscript6.C
index 72c7aef42af1..df4a6f92166c 100644
--- a/gcc/testsuite/g++.dg/cpp23/subscript6.C
+++ b/gcc/testsuite/g++.dg/cpp23/subscript6.C
@@ -1,6 +1,7 @@
 // P2128R6
 // { dg-do run }
 // { dg-options "-std=c++23" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <initializer_list>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
index d13100b96f9c..7864935cfc0a 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
index 2fe479934a8b..e48d640a1679 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
index 471eaba773fc..94cebb9cd2a4 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec4.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
index a15749a88be1..3cb525ec25ce 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-explicit-spec5.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
index 77e10c6b5c72..865ca3743112 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
index 5ee5c2dac8f3..50e98fb831b2 100644
--- a/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-pr67774.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++20 } }
 // { dg-additional-options "-fconcepts-ts" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <type_traits>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
index 531ec1c4c725..835276b28150 100644
--- a/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+++ b/gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
@@ -1,5 +1,6 @@
 // PR c++/67348
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <type_traits>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
index 4fafac137931..4a816dacd0fb 100644
--- a/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
+++ b/gcc/testsuite/g++.dg/cpp2a/nontype-float1.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 
 #include <cmath>
 
diff --git a/gcc/testsuite/g++.dg/diagnostic/disable.C b/gcc/testsuite/g++.dg/diagnostic/disable.C
index 7d86e073b26c..c055c40bd499 100644
--- a/gcc/testsuite/g++.dg/diagnostic/disable.C
+++ b/gcc/testsuite/g++.dg/diagnostic/disable.C
@@ -1,4 +1,5 @@
 // { dg-options "-Wtemplates -Wmultiple-inheritance -Wvirtual-inheritance -Wnamespaces" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/diagnostic/pr65923.C b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
index 036f44781813..85ac03e00c95 100644
--- a/gcc/testsuite/g++.dg/diagnostic/pr65923.C
+++ b/gcc/testsuite/g++.dg/diagnostic/pr65923.C
@@ -1,4 +1,5 @@
 // { dg-do compile { target c++14 } }
+// { dg-skip-if "requires hosted libstdc++ for chrono" { ! hostedlib } }
 
 #include <chrono>
 
diff --git a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
index 8ea25e57ca25..b72df103462a 100644
--- a/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
+++ b/gcc/testsuite/g++.dg/eh/arm-vfp-unwind.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-require-effective-target arm32 } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 /* Test to catch off-by-one errors in arm/pr-support.c.  */
 
diff --git a/gcc/testsuite/g++.dg/eh/crossjump1.C b/gcc/testsuite/g++.dg/eh/crossjump1.C
index ccb0ffb21855..dca2adbff524 100644
--- a/gcc/testsuite/g++.dg/eh/crossjump1.C
+++ b/gcc/testsuite/g++.dg/eh/crossjump1.C
@@ -3,6 +3,7 @@
 // and one without REG_EH_REGION note.
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <exception>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/eh/filter2.C b/gcc/testsuite/g++.dg/eh/filter2.C
index fe87cc9a3081..e8f96cfd4e60 100644
--- a/gcc/testsuite/g++.dg/eh/filter2.C
+++ b/gcc/testsuite/g++.dg/eh/filter2.C
@@ -2,6 +2,7 @@
 // running destructors.  Original bug depended on a::~a being inlined.
 // { dg-do run }
 // { dg-options -O }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
index 3792e11fe4c9..f563410ae05c 100644
--- a/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
+++ b/gcc/testsuite/g++.dg/eh/omit-frame-pointer.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options -fomit-frame-pointer }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/eh/simd-3.C b/gcc/testsuite/g++.dg/eh/simd-3.C
index 5ac75c932203..8af385ce14b9 100644
--- a/gcc/testsuite/g++.dg/eh/simd-3.C
+++ b/gcc/testsuite/g++.dg/eh/simd-3.C
@@ -1,6 +1,7 @@
 // { dg-options "-O" }
 // { dg-options "-O -maltivec" { target { powerpc*-*-darwin* && powerpc_altivec_ok } } }
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstdlib>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught1.C b/gcc/testsuite/g++.dg/eh/uncaught1.C
index 4f05be59fd1a..9a414b5732aa 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught1.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught1.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-Wno-deprecated" }
 // { dg-options "-fuse-cxa-get-exception-ptr -Wno-deprecated" { target powerpc*-*-darwin* } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/eh/uncaught2.C b/gcc/testsuite/g++.dg/eh/uncaught2.C
index 62e4d4ded225..42fd664d91cf 100644
--- a/gcc/testsuite/g++.dg/eh/uncaught2.C
+++ b/gcc/testsuite/g++.dg/eh/uncaught2.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-final { scan-assembler-not "__cxa_get_exception" } }
 // { dg-options "-fno-use-cxa-get-exception-ptr -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <exception>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.dg/ext/bases.C b/gcc/testsuite/g++.dg/ext/bases.C
index 43f71925dcd6..9de34c76c1e9 100644
--- a/gcc/testsuite/g++.dg/ext/bases.C
+++ b/gcc/testsuite/g++.dg/ext/bases.C
@@ -1,5 +1,6 @@
 // { dg-options "-w" }
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<typeinfo>
 #include<cassert>
diff --git a/gcc/testsuite/g++.dg/ext/builtin-line1.C b/gcc/testsuite/g++.dg/ext/builtin-line1.C
index 21a4f59a46f3..4fd6e0c01449 100644
--- a/gcc/testsuite/g++.dg/ext/builtin-line1.C
+++ b/gcc/testsuite/g++.dg/ext/builtin-line1.C
@@ -1,5 +1,6 @@
 // __builtin_LINE gets the location where the default argument is expanded.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 struct Foo
diff --git a/gcc/testsuite/g++.dg/ext/complex4.C b/gcc/testsuite/g++.dg/ext/complex4.C
index 78b9356702e3..b53e289decf7 100644
--- a/gcc/testsuite/g++.dg/ext/complex4.C
+++ b/gcc/testsuite/g++.dg/ext/complex4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // This code used to be rejected as there was no conversion from int to float __complex__
  #include <vector>
  typedef float __complex__ fcomplex;
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
index 36b93d811834..c7d0d3a5bd03 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
index 594d3a98672d..59715ae87f2a 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 
 #include <cassert>
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
index 03304452f8c2..a167877e6419 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
index 68ca111b09da..04cad04b2918 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_constructor_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (); };
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
index 04f681f602a1..f4100817fce1 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
index 901d2110748f..45f99e4fe4ac 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-2.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
index 797004410937..fb652e6e99ec 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-3.C
@@ -1,5 +1,6 @@
 // PR c++/36871
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct F {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
index 63e67331ec80..ca198ed5ea69 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-4.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
index e92801d61bfd..58d63662720c 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-5.C
@@ -1,5 +1,6 @@
 // PR c++/36872
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
index c4e0a5ce7ba5..88255dc78885 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-6.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
index 076f8a31ff64..ee23aaaae492 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy-7.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S {
diff --git a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
index 573fd2f80c85..bf1ea0addaf8 100644
--- a/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
+++ b/gcc/testsuite/g++.dg/ext/has_nothrow_copy_odr.C
@@ -1,5 +1,6 @@
 // PR c++/36870
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct S { S (const S&); };
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
index dce0f8b3a516..6a6a718a2046 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_assign.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
index f4addd82446f..021d2d72e1f2 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
index 4d2341b17e1d..dd879f708f50 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_copy.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
index 2834c238d6e9..4ae89e43e382 100644
--- a/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
+++ b/gcc/testsuite/g++.dg/ext/has_trivial_destructor-1.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
index 62b60aebf59e..5f3615e92673 100644
--- a/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
+++ b/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_abstract.C b/gcc/testsuite/g++.dg/ext/is_abstract.C
index 2d7149452ffe..6bda8c2d1b11 100644
--- a/gcc/testsuite/g++.dg/ext/is_abstract.C
+++ b/gcc/testsuite/g++.dg/ext/is_abstract.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_aggregate.C b/gcc/testsuite/g++.dg/ext/is_aggregate.C
index bdcc70fa7c22..75172d414f5d 100644
--- a/gcc/testsuite/g++.dg/ext/is_aggregate.C
+++ b/gcc/testsuite/g++.dg/ext/is_aggregate.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 template<typename T>
diff --git a/gcc/testsuite/g++.dg/ext/is_base_of.C b/gcc/testsuite/g++.dg/ext/is_base_of.C
index 8afa532e1cdd..7204717e2384 100644
--- a/gcc/testsuite/g++.dg/ext/is_base_of.C
+++ b/gcc/testsuite/g++.dg/ext/is_base_of.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 class A1
diff --git a/gcc/testsuite/g++.dg/ext/is_class.C b/gcc/testsuite/g++.dg/ext/is_class.C
index 6f3982855809..f06f53e3ca88 100644
--- a/gcc/testsuite/g++.dg/ext/is_class.C
+++ b/gcc/testsuite/g++.dg/ext/is_class.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_convertible2.C b/gcc/testsuite/g++.dg/ext/is_convertible2.C
index 9b46e2643793..3dd90bdafb90 100644
--- a/gcc/testsuite/g++.dg/ext/is_convertible2.C
+++ b/gcc/testsuite/g++.dg/ext/is_convertible2.C
@@ -1,5 +1,6 @@
 // PR c++/106784
 // { dg-do compile { target c++20 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Adapted from <https://en.cppreference.com/w/cpp/types/is_convertible>.
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/ext/is_empty.C b/gcc/testsuite/g++.dg/ext/is_empty.C
index 4c58941b3bf3..03c7dc0919e4 100644
--- a/gcc/testsuite/g++.dg/ext/is_empty.C
+++ b/gcc/testsuite/g++.dg/ext/is_empty.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_enum.C b/gcc/testsuite/g++.dg/ext/is_enum.C
index 4ac1723ed9a1..337c00ef1455 100644
--- a/gcc/testsuite/g++.dg/ext/is_enum.C
+++ b/gcc/testsuite/g++.dg/ext/is_enum.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_pod.C b/gcc/testsuite/g++.dg/ext/is_pod.C
index d073889c839f..39035859c205 100644
--- a/gcc/testsuite/g++.dg/ext/is_pod.C
+++ b/gcc/testsuite/g++.dg/ext/is_pod.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/is_polymorphic.C b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
index 462e4b705d8f..54adaf411ab2 100644
--- a/gcc/testsuite/g++.dg/ext/is_polymorphic.C
+++ b/gcc/testsuite/g++.dg/ext/is_polymorphic.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <exception>
 
diff --git a/gcc/testsuite/g++.dg/ext/is_union.C b/gcc/testsuite/g++.dg/ext/is_union.C
index c95f5a6e5614..b2ac48722744 100644
--- a/gcc/testsuite/g++.dg/ext/is_union.C
+++ b/gcc/testsuite/g++.dg/ext/is_union.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct A
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type10.C b/gcc/testsuite/g++.dg/ext/underlying_type10.C
index 66ba02e997e2..c6e8d6d0b361 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type10.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type10.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/ext/underlying_type4.C b/gcc/testsuite/g++.dg/ext/underlying_type4.C
index b80ed57694ba..f85d35c96971 100644
--- a/gcc/testsuite/g++.dg/ext/underlying_type4.C
+++ b/gcc/testsuite/g++.dg/ext/underlying_type4.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for tr1/type_traits" { ! hostedlib } }
 
 #include <tr1/type_traits>
 
diff --git a/gcc/testsuite/g++.dg/inherit/virtual8.C b/gcc/testsuite/g++.dg/inherit/virtual8.C
index 4f6a119b2879..def4eb920f68 100644
--- a/gcc/testsuite/g++.dg/inherit/virtual8.C
+++ b/gcc/testsuite/g++.dg/inherit/virtual8.C
@@ -1,5 +1,6 @@
 // PR c++/48035
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/init/array4.C b/gcc/testsuite/g++.dg/init/array4.C
index 4712e9d7253d..61ef9c0d33fa 100644
--- a/gcc/testsuite/g++.dg/init/array4.C
+++ b/gcc/testsuite/g++.dg/init/array4.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-require-effective-target size20plus }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Origin: Markus Breuer <markus.breuer@materna.de>
 
 // PR c++/6944
diff --git a/gcc/testsuite/g++.dg/init/new18.C b/gcc/testsuite/g++.dg/init/new18.C
index afe3da9b53e6..0542b28dd456 100644
--- a/gcc/testsuite/g++.dg/init/new18.C
+++ b/gcc/testsuite/g++.dg/init/new18.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fstrict-aliasing -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // This caused an ICE during placement new.
 
diff --git a/gcc/testsuite/g++.dg/init/new39.C b/gcc/testsuite/g++.dg/init/new39.C
index 430701db6843..14f4d17c6a32 100644
--- a/gcc/testsuite/g++.dg/init/new39.C
+++ b/gcc/testsuite/g++.dg/init/new39.C
@@ -1,5 +1,6 @@
 // Testcase for overflow handling in operator new[].
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdlib.h>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/init/new40.C b/gcc/testsuite/g++.dg/init/new40.C
index 30d9de62a029..8d90533b0795 100644
--- a/gcc/testsuite/g++.dg/init/new40.C
+++ b/gcc/testsuite/g++.dg/init/new40.C
@@ -4,6 +4,7 @@
 // { dg-options -std=c++03 }
 // { dg-do run }
 // { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <assert.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-29.C b/gcc/testsuite/g++.dg/ipa/devirt-29.C
index b4f24a1044ca..ef1ce7bfbdd5 100644
--- a/gcc/testsuite/g++.dg/ipa/devirt-29.C
+++ b/gcc/testsuite/g++.dg/ipa/devirt-29.C
@@ -1,4 +1,5 @@
 /* { dg-do run { target c++11 } } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 /* There is a devirtualizable call. In PR60306 we deduced wrong target to cxa_pure_virtual.
    For gcc 4.10 we temporarily disable the devirtualization.  */
 /* { dg-options "-O3"  } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr85549.C b/gcc/testsuite/g++.dg/ipa/pr85549.C
index ae0336e16b71..eeaeb6af6eaf 100644
--- a/gcc/testsuite/g++.dg/ipa/pr85549.C
+++ b/gcc/testsuite/g++.dg/ipa/pr85549.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
index ee567edde603..0e3259451eae 100644
--- a/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
+++ b/gcc/testsuite/g++.dg/lookup/missing-std-include-3.C
@@ -3,6 +3,7 @@
    For this case, expect to insert the #include at the top of the file. */
 
 /* { dg-options "-fdiagnostics-generate-patch" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 void test ()
 {
diff --git a/gcc/testsuite/g++.dg/lookup/pr21802.C b/gcc/testsuite/g++.dg/lookup/pr21802.C
index 18b2219166a4..40620bf695ef 100644
--- a/gcc/testsuite/g++.dg/lookup/pr21802.C
+++ b/gcc/testsuite/g++.dg/lookup/pr21802.C
@@ -1,5 +1,6 @@
 // PR c++/21802
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 
 struct X;
diff --git a/gcc/testsuite/g++.dg/lto/20091022-2_0.C b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
index 29ed9b6b0a06..a1606bc3b627 100644
--- a/gcc/testsuite/g++.dg/lto/20091022-2_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091022-2_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do link }
 // { dg-lto-options {{-O3 -flto -Winline}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/lto/20091219_0.C b/gcc/testsuite/g++.dg/lto/20091219_0.C
index b76a95a9d132..eede1c1d9a6f 100644
--- a/gcc/testsuite/g++.dg/lto/20091219_0.C
+++ b/gcc/testsuite/g++.dg/lto/20091219_0.C
@@ -1,5 +1,6 @@
 // { dg-lto-do run }
 // { dg-lto-options {{-O3 -flto}} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_0.C b/gcc/testsuite/g++.dg/lto/pr89358_0.C
index 328c60c2fb18..ed14b9da7aaf 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_0.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_0.C
@@ -1,5 +1,6 @@
 /* { dg-lto-do link } */
 /* { dg-lto-options "-std=c++17"  } */
+/* { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } } */
 #include <map>
 
 extern void test();
diff --git a/gcc/testsuite/g++.dg/lto/pr89358_1.C b/gcc/testsuite/g++.dg/lto/pr89358_1.C
index 68b80a376623..9085b2641d60 100644
--- a/gcc/testsuite/g++.dg/lto/pr89358_1.C
+++ b/gcc/testsuite/g++.dg/lto/pr89358_1.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++14"  } */
+
 #include <map>
 
 void test()
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_a.H b/gcc/testsuite/g++.dg/modules/binding-1_a.H
index 2d2460d90392..ba9fed733ab9 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/binding-1_b.H b/gcc/testsuite/g++.dg/modules/binding-1_b.H
index eb5140bc0245..09b7adfa83ca 100644
--- a/gcc/testsuite/g++.dg/modules/binding-1_b.H
+++ b/gcc/testsuite/g++.dg/modules/binding-1_b.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_a.C b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
index f991ef8644eb..4bbfaf4237cb 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-1_b.C b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
index 30c15f6928b5..5a890ea6f92a 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-1_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_a.C b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
index 828d680d2a09..d80b438b7a98 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_a.C
@@ -4,6 +4,7 @@
 // contracts are correctly marked as a dependency of the function itself and
 // serialized in the correct order.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-2_b.C b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
index 01939aeb947b..c436f9bf87e9 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 module foo;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_a.C b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
index a4f03d358426..92f59996b940 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_a.C
@@ -1,6 +1,7 @@
 // Basic test to ensure that guarded templates correctly serialize and
 // deserialize their contracts through the CMI.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-continuation-mode=on" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-3_b.C b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
index b1d6375391b6..e5a75d396aa7 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-3_b.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:ignore,ignore,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module bar;
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_a.C b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
index f269e6c20782..357bad83d3d9 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_a.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_a.C
@@ -2,6 +2,7 @@
 // contracts flag is not set, regardless of the current TU's contract
 // configuration.
 // { dg-additional-options "-fmodules-ts -fcontracts -fcontract-role=default:maybe,maybe,ignore" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <experimental/contract>
diff --git a/gcc/testsuite/g++.dg/modules/contracts-4_d.C b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
index dc56251d1d88..d6858c2271dc 100644
--- a/gcc/testsuite/g++.dg/modules/contracts-4_d.C
+++ b/gcc/testsuite/g++.dg/modules/contracts-4_d.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fcontracts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 export module baz;
diff --git a/gcc/testsuite/g++.dg/modules/global-3_a.C b/gcc/testsuite/g++.dg/modules/global-3_a.C
index fe7bb849ae88..70d92ea01ca1 100644
--- a/gcc/testsuite/g++.dg/modules/global-3_a.C
+++ b/gcc/testsuite/g++.dg/modules/global-3_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodules-ts -fdump-lang-module-graph" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 module;
 #include <iostream>
 export module logger;
diff --git a/gcc/testsuite/g++.dg/modules/hello-1_a.C b/gcc/testsuite/g++.dg/modules/hello-1_a.C
index 75853d6c8ca4..ce13fd9238eb 100644
--- a/gcc/testsuite/g++.dg/modules/hello-1_a.C
+++ b/gcc/testsuite/g++.dg/modules/hello-1_a.C
@@ -1,5 +1,6 @@
 // { dg-module-do run }
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 module;
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/modules/iostream-1_a.H b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
index 00f8c192bd84..d8c323cde631 100644
--- a/gcc/testsuite/g++.dg/modules/iostream-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/iostream-1_a.H
@@ -1,6 +1,7 @@
 // { dg-module-do run }
 // { dg-additional-options "-fmodule-header" }
 // { dg-module-cmi {} }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #ifndef MY_IOSTREAM_H
 #define MY_IOSTREAM_H
diff --git a/gcc/testsuite/g++.dg/modules/part-5_c.C b/gcc/testsuite/g++.dg/modules/part-5_c.C
index 0f148c3fce34..cdcea49e020e 100644
--- a/gcc/testsuite/g++.dg/modules/part-5_c.C
+++ b/gcc/testsuite/g++.dg/modules/part-5_c.C
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodules-ts }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 import module1;
diff --git a/gcc/testsuite/g++.dg/modules/string-1_a.H b/gcc/testsuite/g++.dg/modules/string-1_a.H
index 77c565f7ddf6..250dcbad0c39 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/string-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include <string>
diff --git a/gcc/testsuite/g++.dg/modules/string-1_b.C b/gcc/testsuite/g++.dg/modules/string-1_b.C
index 098289c54f18..d066b11f9163 100644
--- a/gcc/testsuite/g++.dg/modules/string-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/string-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 import "string-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/string-view1.C b/gcc/testsuite/g++.dg/modules/string-view1.C
index f5391f391805..19219a1e266d 100644
--- a/gcc/testsuite/g++.dg/modules/string-view1.C
+++ b/gcc/testsuite/g++.dg/modules/string-view1.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 module;
 #include <cstdio>
 #include <string_view>
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
index f30dacce0cc4..940c6da9576a 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
index e2730163ffc2..b64f5944b3c0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in xtreme-header-1.h" { ! hostedlib } }
 
 #include "xtreme-header-1.h"
 import "xtreme-header-1_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
index 217ead37d254..a52fefdae0ab 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-2.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
index 1f608ec29b79..b7ff864ac132 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for execution in xtreme-header-2.h" { ! hostedlib } }
 
 #include "xtreme-header-2.h"
 import "xtreme-header-2_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
index d3ff6fd4b56c..695fb279b4a0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-3.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
index 2eb3145c944f..5a912b8fba14 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-3_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for deque in xtreme-header-3.h" { ! hostedlib } }
 
 #include "xtreme-header-3.h"
 import "xtreme-header-3_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
index 391adbe8ebfb..eb1815c253b5 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-4.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
index ff7147ebf640..663b3bada3d0 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-4_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for charconv in xtreme-header-4.h" { ! hostedlib } }
 
 #include "xtreme-header-4.h"
 import "xtreme-header-4_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
index a03c0241c9e6..371995493b22 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-5.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
index 8cf7d6856b93..e6fe2d98d7fd 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header-5.h" { ! hostedlib } }
 
 #include "xtreme-header-5.h"
 import "xtreme-header-5_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
index aec5a031fc69..e5b9f2ecf6c7 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header-6.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
index 0d2cc69df54a..f69c56184a74 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for barrier in xtreme-header-6.h" { ! hostedlib } }
 
 #include "xtreme-header-6.h"
 import "xtreme-header-6_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
index bf7859fba991..9c42b7a38ced 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-header.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
index 2e736da36dcc..2b0e91af52a3 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-header_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for any in xtreme-header.h" { ! hostedlib } }
 
 #include "xtreme-header.h"
 import "xtreme-header_a.H";
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
index bed70a683bb1..02a2a7e9a797 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
@@ -1,4 +1,5 @@
 // { dg-additional-options -fmodule-header }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 // { dg-module-cmi {} }
 #include "xtreme-tr1.h"
diff --git a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
index 9bb1dc294adf..f0c599021938 100644
--- a/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
+++ b/gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
@@ -1,4 +1,5 @@
 // { dg-additional-options "-fmodules-ts -fno-module-lazy" }
+// { dg-skip-if "requires hosted libstdc++ for tr1/functional in xtreme-tr1.h" { ! hostedlib } }
 
 #include "xtreme-tr1.h"
 import "xtreme-tr1_a.H";
diff --git a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
index e3ca43b74306..057ba0fa91a1 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
+++ b/gcc/testsuite/g++.dg/opt/dtor4-aux.cc
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/dtor4.C b/gcc/testsuite/g++.dg/opt/dtor4.C
index c58fadfa18d2..41f1a2082407 100644
--- a/gcc/testsuite/g++.dg/opt/dtor4.C
+++ b/gcc/testsuite/g++.dg/opt/dtor4.C
@@ -2,6 +2,7 @@
 // { dg-do run }
 // { dg-options "-O1 -fipa-sra" }
 // { dg-additional-sources "dtor4-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for cassert in dtor4.h" { ! hostedlib } }
 
 #include "dtor4.h"
 
diff --git a/gcc/testsuite/g++.dg/opt/eh4.C b/gcc/testsuite/g++.dg/opt/eh4.C
index 0a62ee2db272..be30fcc1ffd3 100644
--- a/gcc/testsuite/g++.dg/opt/eh4.C
+++ b/gcc/testsuite/g++.dg/opt/eh4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 // Make sure that the call to terminate within F2 is not eliminated
 // by incorrect MUST_NOT_THROW optimization.  Note that we expect F1
diff --git a/gcc/testsuite/g++.dg/opt/nrv17.C b/gcc/testsuite/g++.dg/opt/nrv17.C
index 6248bca037af..27004e06a68a 100644
--- a/gcc/testsuite/g++.dg/opt/nrv17.C
+++ b/gcc/testsuite/g++.dg/opt/nrv17.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <cstdlib>
 #include <complex>
diff --git a/gcc/testsuite/g++.dg/opt/pr102970.C b/gcc/testsuite/g++.dg/opt/pr102970.C
index 2acb3c2c8dcb..84f6fffcad04 100644
--- a/gcc/testsuite/g++.dg/opt/pr102970.C
+++ b/gcc/testsuite/g++.dg/opt/pr102970.C
@@ -1,6 +1,7 @@
 // { dg-do run }
 // { dg-require-effective-target c++14 }
 // { dg-options "-O2 -funroll-loops -fno-tree-vectorize" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr109434.C b/gcc/testsuite/g++.dg/opt/pr109434.C
index cffa327fd9b5..9486d1506ddb 100644
--- a/gcc/testsuite/g++.dg/opt/pr109434.C
+++ b/gcc/testsuite/g++.dg/opt/pr109434.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <optional>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/opt/pr15551.C b/gcc/testsuite/g++.dg/opt/pr15551.C
index dc3ddc44662c..ccaa233ea1ed 100644
--- a/gcc/testsuite/g++.dg/opt/pr15551.C
+++ b/gcc/testsuite/g++.dg/opt/pr15551.C
@@ -4,6 +4,7 @@
 //
 // { dg-do run }
 // { dg-options "-O3" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 #include <fstream>
diff --git a/gcc/testsuite/g++.dg/opt/pr30965.C b/gcc/testsuite/g++.dg/opt/pr30965.C
index 4adca8b2f622..49c97e9c2ea5 100644
--- a/gcc/testsuite/g++.dg/opt/pr30965.C
+++ b/gcc/testsuite/g++.dg/opt/pr30965.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fno-ipa-icf -fdump-tree-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for tr1/functional" { ! hostedlib } }
 
 #include <tr1/functional>
 #include <algorithm>
diff --git a/gcc/testsuite/g++.dg/opt/pr77844.C b/gcc/testsuite/g++.dg/opt/pr77844.C
index 66eb978ddb75..3a8252adb9cd 100644
--- a/gcc/testsuite/g++.dg/opt/pr77844.C
+++ b/gcc/testsuite/g++.dg/opt/pr77844.C
@@ -1,6 +1,7 @@
 // PR debug/77844
 // { dg-do compile }
 // { dg-options "-O3 -g" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/opt/pr85393.C b/gcc/testsuite/g++.dg/opt/pr85393.C
index a2a3162300ea..4f3c65bdd5c2 100644
--- a/gcc/testsuite/g++.dg/opt/pr85393.C
+++ b/gcc/testsuite/g++.dg/opt/pr85393.C
@@ -2,6 +2,7 @@
 // { dg-do run { target c++11 } }
 // { dg-options "-O2" }
 // { dg-additional-sources "pr85393-aux.cc" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <stdexcept>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/opt/reload3.C b/gcc/testsuite/g++.dg/opt/reload3.C
index daa7ffdbcefb..385771154a86 100644
--- a/gcc/testsuite/g++.dg/opt/reload3.C
+++ b/gcc/testsuite/g++.dg/opt/reload3.C
@@ -1,6 +1,7 @@
 // PR target/38287
 // { dg-do run }
 // { dg-options "-O2 -mcpu=v8 -fPIC" { target { { sparc*-*-* } && { ilp32 && fpic } } } }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/other/final7.C b/gcc/testsuite/g++.dg/other/final7.C
index 43ab7baae97e..5c499a667fd1 100644
--- a/gcc/testsuite/g++.dg/other/final7.C
+++ b/gcc/testsuite/g++.dg/other/final7.C
@@ -1,5 +1,6 @@
 // PR c++/90909
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 
diff --git a/gcc/testsuite/g++.dg/other/pr40561.C b/gcc/testsuite/g++.dg/other/pr40561.C
index c94dfa4bd625..09cb2b38fbf1 100644
--- a/gcc/testsuite/g++.dg/other/pr40561.C
+++ b/gcc/testsuite/g++.dg/other/pr40561.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 
 #include <set>
 
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
index dab415235951..77a448596f76 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1-utf8.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 #include <cstdlib>
 
 int À(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/other/ucnid-1.C b/gcc/testsuite/g++.dg/other/ucnid-1.C
index 954f34dff961..ac7cfabf9ef7 100644
--- a/gcc/testsuite/g++.dg/other/ucnid-1.C
+++ b/gcc/testsuite/g++.dg/other/ucnid-1.C
@@ -2,6 +2,7 @@
 /* { dg-options "" } */
 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
 /* { dg-skip-if "" { ! ucn } } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 #include <cstdlib>
 
 int \u00C0(void) { return 1; }
diff --git a/gcc/testsuite/g++.dg/parse/lookup1.C b/gcc/testsuite/g++.dg/parse/lookup1.C
index 0325d3c69265..fa0e2007f32c 100644
--- a/gcc/testsuite/g++.dg/parse/lookup1.C
+++ b/gcc/testsuite/g++.dg/parse/lookup1.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.dg/parse/parse5.C b/gcc/testsuite/g++.dg/parse/parse5.C
index f9e6a0359847..e2c924f58b5f 100644
--- a/gcc/testsuite/g++.dg/parse/parse5.C
+++ b/gcc/testsuite/g++.dg/parse/parse5.C
@@ -1,5 +1,6 @@
 /* PR c++/590 */
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/pch/system-1.C b/gcc/testsuite/g++.dg/pch/system-1.C
index 72bea3c9a6f1..769c5d117163 100644
--- a/gcc/testsuite/g++.dg/pch/system-1.C
+++ b/gcc/testsuite/g++.dg/pch/system-1.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-1.H" { ! hostedlib } }
+
 #include "system-1.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pch/system-2.C b/gcc/testsuite/g++.dg/pch/system-2.C
index 44f3ec018aea..91693cfdbacc 100644
--- a/gcc/testsuite/g++.dg/pch/system-2.C
+++ b/gcc/testsuite/g++.dg/pch/system-2.C
@@ -1,3 +1,5 @@
+// { dg-skip-if "requires hosted libstdc++ for iostream in system-2.H" { ! hostedlib } }
+
 #include "system-2.H"
 
 int main() 
diff --git a/gcc/testsuite/g++.dg/pr100253.C b/gcc/testsuite/g++.dg/pr100253.C
index 0102caa7df86..96526eb00e3b 100644
--- a/gcc/testsuite/g++.dg/pr100253.C
+++ b/gcc/testsuite/g++.dg/pr100253.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr104547.C b/gcc/testsuite/g++.dg/pr104547.C
index b6135ffe3a04..669f0b8e43c0 100644
--- a/gcc/testsuite/g++.dg/pr104547.C
+++ b/gcc/testsuite/g++.dg/pr104547.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-vrp2"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr107087.C b/gcc/testsuite/g++.dg/pr107087.C
index 3ca76b4153cd..93428a71ae61 100644
--- a/gcc/testsuite/g++.dg/pr107087.C
+++ b/gcc/testsuite/g++.dg/pr107087.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr71488.C b/gcc/testsuite/g++.dg/pr71488.C
index ffe30f1afeb1..2ca1a7004465 100644
--- a/gcc/testsuite/g++.dg/pr71488.C
+++ b/gcc/testsuite/g++.dg/pr71488.C
@@ -3,6 +3,7 @@
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target sse4_runtime } }
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <valarray>
 
diff --git a/gcc/testsuite/g++.dg/pr71655.C b/gcc/testsuite/g++.dg/pr71655.C
index 45943060bc53..0269297ed57e 100644
--- a/gcc/testsuite/g++.dg/pr71655.C
+++ b/gcc/testsuite/g++.dg/pr71655.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-options "-O3 -std=c++11" }
 // { dg-additional-options "-msse4" { target i?86-*-* x86_64-*-* } }
+// { dg-skip-if "requires hosted libstdc++ for valarray" { ! hostedlib } }
 
 #include <functional>
 #include <valarray>
diff --git a/gcc/testsuite/g++.dg/pr79095-3.C b/gcc/testsuite/g++.dg/pr79095-3.C
index 28c8a3768e61..37eee30dc97e 100644
--- a/gcc/testsuite/g++.dg/pr79095-3.C
+++ b/gcc/testsuite/g++.dg/pr79095-3.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-Wall -O3" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr83239.C b/gcc/testsuite/g++.dg/pr83239.C
index bf6be7a03cce..92af1b957c11 100644
--- a/gcc/testsuite/g++.dg/pr83239.C
+++ b/gcc/testsuite/g++.dg/pr83239.C
@@ -2,6 +2,7 @@
 // on simple std::vector code
 // { dg-do compile }
 // { dg-options "-O3 -finline-limit=500 -Wall -fdump-tree-optimized"  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/pr99966.C b/gcc/testsuite/g++.dg/pr99966.C
index 4d689822b87a..6a772342d0f0 100644
--- a/gcc/testsuite/g++.dg/pr99966.C
+++ b/gcc/testsuite/g++.dg/pr99966.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -fdump-tree-vrp1" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 // Test we can remove a range bound after the assert.
 
diff --git a/gcc/testsuite/g++.dg/rtti/typeid4.C b/gcc/testsuite/g++.dg/rtti/typeid4.C
index e6a1dce16f0e..fc84dab697a6 100644
--- a/gcc/testsuite/g++.dg/rtti/typeid4.C
+++ b/gcc/testsuite/g++.dg/rtti/typeid4.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/spellcheck-inttypes.C b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
index 541d668cbba4..781dcb259f41 100644
--- a/gcc/testsuite/g++.dg/spellcheck-inttypes.C
+++ b/gcc/testsuite/g++.dg/spellcheck-inttypes.C
@@ -1,4 +1,5 @@
 /* { dg-options "-std=c++11" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 #ifdef _AIX
 #define _STD_TYPES_T
 #endif
diff --git a/gcc/testsuite/g++.dg/template/friend10.C b/gcc/testsuite/g++.dg/template/friend10.C
index cab5e346f0bf..49e753184701 100644
--- a/gcc/testsuite/g++.dg/template/friend10.C
+++ b/gcc/testsuite/g++.dg/template/friend10.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 // Copyright (C) 2002 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 24 Dec 2002 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.dg/template/pr69961a.C b/gcc/testsuite/g++.dg/template/pr69961a.C
index b0c5d41b27c3..1cd69b90130c 100644
--- a/gcc/testsuite/g++.dg/template/pr69961a.C
+++ b/gcc/testsuite/g++.dg/template/pr69961a.C
@@ -1,5 +1,6 @@
 // PR c++/69961
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/template/show-template-tree-3.C b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
index ef3113711aee..1b39dfca12f2 100644
--- a/gcc/testsuite/g++.dg/template/show-template-tree-3.C
+++ b/gcc/testsuite/g++.dg/template/show-template-tree-3.C
@@ -9,6 +9,7 @@
    for that in this case).  */
 
 // { dg-options "-fdiagnostics-show-template-tree -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 
 #include <map>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/torture/alias-1.C b/gcc/testsuite/g++.dg/torture/alias-1.C
index 2abe54385109..01eb86ca2a4c 100644
--- a/gcc/testsuite/g++.dg/torture/alias-1.C
+++ b/gcc/testsuite/g++.dg/torture/alias-1.C
@@ -3,6 +3,7 @@
 // from inlined destructor, the buf1 variable doesn't go out of scope
 // until after the baz call.
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <new>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/torture/builtin-location.C b/gcc/testsuite/g++.dg/torture/builtin-location.C
index cad53de4b485..6dd94b25deeb 100644
--- a/gcc/testsuite/g++.dg/torture/builtin-location.C
+++ b/gcc/testsuite/g++.dg/torture/builtin-location.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr103669.C b/gcc/testsuite/g++.dg/torture/pr103669.C
index a9509c354f18..856f865d5a9e 100644
--- a/gcc/testsuite/g++.dg/torture/pr103669.C
+++ b/gcc/testsuite/g++.dg/torture/pr103669.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-additional-options "--param=modref-max-depth=1" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 #include <list>
 
 typedef std::list<void *> PtrList;
diff --git a/gcc/testsuite/g++.dg/torture/pr104601.C b/gcc/testsuite/g++.dg/torture/pr104601.C
index 92ad73d47e92..65ee8ff8a333 100644
--- a/gcc/testsuite/g++.dg/torture/pr104601.C
+++ b/gcc/testsuite/g++.dg/torture/pr104601.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/104601
 // { dg-do run }
 // { dg-options "-std=c++17" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <algorithm>
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/torture/pr106922.C b/gcc/testsuite/g++.dg/torture/pr106922.C
index b0c1489fbdc4..102c2bd896ae 100644
--- a/gcc/testsuite/g++.dg/torture/pr106922.C
+++ b/gcc/testsuite/g++.dg/torture/pr106922.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-additional-options "-Wall" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // -O1 doesn't iterate VN and thus has bogus uninit diagnostics
 // { dg-skip-if "" { *-*-* } { "-O1" } { "" } }
 
diff --git a/gcc/testsuite/g++.dg/torture/pr111019.C b/gcc/testsuite/g++.dg/torture/pr111019.C
index ce21a311c96e..4903dc308b76 100644
--- a/gcc/testsuite/g++.dg/torture/pr111019.C
+++ b/gcc/testsuite/g++.dg/torture/pr111019.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fstrict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33572.C b/gcc/testsuite/g++.dg/torture/pr33572.C
index b4db2ac662ba..7809c9733a38 100644
--- a/gcc/testsuite/g++.dg/torture/pr33572.C
+++ b/gcc/testsuite/g++.dg/torture/pr33572.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++98" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/torture/pr33735.C b/gcc/testsuite/g++.dg/torture/pr33735.C
index 0a90745b91e5..30522f99cc23 100644
--- a/gcc/testsuite/g++.dg/torture/pr33735.C
+++ b/gcc/testsuite/g++.dg/torture/pr33735.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 typedef struct _ts { } PyThreadState;
 PyThreadState * Py_NewInterpreter(void);
diff --git a/gcc/testsuite/g++.dg/torture/pr34099.C b/gcc/testsuite/g++.dg/torture/pr34099.C
index 49fa9cac1ebc..eceacab37b36 100644
--- a/gcc/testsuite/g++.dg/torture/pr34099.C
+++ b/gcc/testsuite/g++.dg/torture/pr34099.C
@@ -1,4 +1,5 @@
 /* { dg-do run } */
+/* { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr39417.C b/gcc/testsuite/g++.dg/torture/pr39417.C
index b7bbb88b7845..84d497a1c218 100644
--- a/gcc/testsuite/g++.dg/torture/pr39417.C
+++ b/gcc/testsuite/g++.dg/torture/pr39417.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr44972.C b/gcc/testsuite/g++.dg/torture/pr44972.C
index e409148da1c3..b51fc5e0e176 100644
--- a/gcc/testsuite/g++.dg/torture/pr44972.C
+++ b/gcc/testsuite/g++.dg/torture/pr44972.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include<cassert>
 #include<new>
diff --git a/gcc/testsuite/g++.dg/torture/pr46364.C b/gcc/testsuite/g++.dg/torture/pr46364.C
index 40fd2f0760f2..d822278df57a 100644
--- a/gcc/testsuite/g++.dg/torture/pr46364.C
+++ b/gcc/testsuite/g++.dg/torture/pr46364.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 void a()
diff --git a/gcc/testsuite/g++.dg/torture/pr49628.C b/gcc/testsuite/g++.dg/torture/pr49628.C
index 4bc6543a35e3..197c8c1cccc8 100644
--- a/gcc/testsuite/g++.dg/torture/pr49628.C
+++ b/gcc/testsuite/g++.dg/torture/pr49628.C
@@ -1,4 +1,5 @@
 /* { dg-do compile } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr49938.C b/gcc/testsuite/g++.dg/torture/pr49938.C
index d2c73e73871a..fbb74e7b559a 100644
--- a/gcc/testsuite/g++.dg/torture/pr49938.C
+++ b/gcc/testsuite/g++.dg/torture/pr49938.C
@@ -1,3 +1,4 @@
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 #include <cstdlib>
 typedef unsigned short uint16;
diff --git a/gcc/testsuite/g++.dg/torture/pr51903.C b/gcc/testsuite/g++.dg/torture/pr51903.C
index 925021b7e4ba..36cc52e46fbc 100644
--- a/gcc/testsuite/g++.dg/torture/pr51903.C
+++ b/gcc/testsuite/g++.dg/torture/pr51903.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr54498.C b/gcc/testsuite/g++.dg/torture/pr54498.C
index 74651f9063a8..5d1e275dfcb4 100644
--- a/gcc/testsuite/g++.dg/torture/pr54498.C
+++ b/gcc/testsuite/g++.dg/torture/pr54498.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-additional-options "-fno-tree-sra" }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 
 #include <complex>
 
diff --git a/gcc/testsuite/g++.dg/torture/pr60750.C b/gcc/testsuite/g++.dg/torture/pr60750.C
index a344bd764a33..c53189a28fd6 100644
--- a/gcc/testsuite/g++.dg/torture/pr60750.C
+++ b/gcc/testsuite/g++.dg/torture/pr60750.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 // { dg-options "-std=c++11" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.dg/torture/pr67600.C b/gcc/testsuite/g++.dg/torture/pr67600.C
index 0206cae186c4..375654cd4e0f 100644
--- a/gcc/testsuite/g++.dg/torture/pr67600.C
+++ b/gcc/testsuite/g++.dg/torture/pr67600.C
@@ -1,4 +1,5 @@
 // { dg-do run }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.dg/torture/pr82084.C b/gcc/testsuite/g++.dg/torture/pr82084.C
index 416684d2cb85..1fbb4f01cfe2 100644
--- a/gcc/testsuite/g++.dg/torture/pr82084.C
+++ b/gcc/testsuite/g++.dg/torture/pr82084.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int main()
diff --git a/gcc/testsuite/g++.dg/torture/pr95493-1.C b/gcc/testsuite/g++.dg/torture/pr95493-1.C
index 907d191ebfeb..57765dd8d8a6 100644
--- a/gcc/testsuite/g++.dg/torture/pr95493-1.C
+++ b/gcc/testsuite/g++.dg/torture/pr95493-1.C
@@ -1,4 +1,5 @@
 // { dg-do run { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PR rtl-optimization/95493 comment 8
 
 #include <array>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
index 51c470dee372..37b228eff9b6 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
@@ -1,5 +1,6 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Check that there's only one allocator (temporary) variable.
 // Currently the dump doesn't print the allocator template arg in this context.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
index dca7868f3c96..8dddbea38a12 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-cddce2 -ffinite-loops -Wno-unused-result" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
index b1d2d25faf4c..89abdd90a82a 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
index 1e9ac739b2d7..8080e9fbfbd6 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
@@ -1,6 +1,7 @@
 // PR c++/105838
 // { dg-additional-options -fdump-tree-gimple }
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 // Test that we do range-initialization from const char *.
 // { dg-final { scan-tree-dump {_M_range_initialize<const char\* const\*>} "gimple" } }
diff --git a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
index c750b99eeca3..65ce086bfd5b 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
@@ -1,5 +1,6 @@
 // PR c++/108266
 // { dg-do compile { target c++11 } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <initializer_list>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
index 0d679cb9035a..5d30d694bb86 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/loop-cond-split-1.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -fdump-tree-lsplit-details" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <map>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
index bb7b61cad436..3a81c8d63644 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr101839.C
@@ -1,6 +1,7 @@
 // { dg-do run }                                                            
 // { dg-options "-O2 -fdump-tree-optimized" }                                   
 // { dg-require-effective-target c++11 }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <string.h>
 #include <iostream>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
index 3cb3853c22a1..f7dd30ca3117 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr104529.C
@@ -2,6 +2,7 @@
 // { dg-do compile { target c++11 } }
 // { dg-options "-O2 -fdump-tree-optimized" }
 // { dg-final { scan-tree-dump-not "MEM\[^\n\r]*MEM" "optimized" } }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstddef>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
index cf821a58aed7..669bb4d9f198 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fdump-tree-optimized -fno-ipa-reference" } */
+/* { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 namespace {
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
index faaecdfd9717..2c37753f6030 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr19786.C
@@ -1,5 +1,6 @@
 // { dg-do run }
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // We used to get alias grouping wrong on this one, hoisting accesses
 // to the vector's end out of the loop.
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
index 1178eb7038e7..c4dab1aa7108 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
@@ -1,4 +1,5 @@
 // { dg-options "-fdump-tree-optimized -Os" }
+// { dg-skip-if "requires hosted libstdc++ for set" { ! hostedlib } }
 #include <set>
 #include <stdio.h>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
index 2a2c78f9fb25..a96c6c83b0e1 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr63841.C
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
index c946176bfdae..39d58e0da7bb 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr69336.C
@@ -1,5 +1,6 @@
 // { dg-do compile }
 // { dg-options "-O3 -fdump-tree-optimized -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <array>
 #include <utility>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
index e72e516d8d4b..fd08192e98d1 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr78847.C
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-require-effective-target c++14 } */
 /* { dg-options "-O3 -fdump-tree-ldist-optimized" } */
+/* { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <stddef.h>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
index d1bea6dffaa9..0dcc3fdd9329 100644
--- a/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr95638.C
@@ -1,6 +1,7 @@
 // PR tree-optimization/95638
 // { dg-do run }
 // { dg-options "-O2 -std=c++14" }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 
 #include <cassert>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
index 06ce089c4b0e..269999a1f912 100644
--- a/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
+++ b/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O2 -Warray-bounds" }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <array>
 #include <cstring>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
index 77dbbf380b69..b2df01e7d511 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-pointer-pr110055.C
@@ -1,6 +1,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++11 }
 // { dg-options "-O3 -fno-exceptions -Wdangling-pointer" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <cstdint>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
index 733fb8cce630..cc92e6b66e3d 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
@@ -1,6 +1,7 @@
 // PR c++/107532
 // { dg-do compile { target c++20 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <span>
 #include <vector>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
index aee7a29019b9..0343bcf226b6 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
@@ -1,5 +1,6 @@
 // { dg-do compile { target c++17 } }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // Check that we warn here even without -Wsystem-headers.
 
 #include <optional>
diff --git a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
index 59b5538aee59..5e9da1e5bf17 100644
--- a/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
+++ b/gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
@@ -1,6 +1,7 @@
 // PR c++/107488
 // { dg-do compile }
 // { dg-options "-Wdangling-reference" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
index 47f97dcb636a..9d8958599ab3 100644
--- a/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
+++ b/gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-3.C
@@ -2,7 +2,8 @@
    Verify that even without -Wsystem-headers the warning is issued
    for pairs of library functions defined in system headers.
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall" } */
+   { dg-options "-O2 -Wall" }
+   { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } } */
 
 #include <memory>
 #include <string>
diff --git a/gcc/testsuite/g++.dg/warn/Winline-3.C b/gcc/testsuite/g++.dg/warn/Winline-3.C
index 1c226d1b4a04..0b318a9da677 100644
--- a/gcc/testsuite/g++.dg/warn/Winline-3.C
+++ b/gcc/testsuite/g++.dg/warn/Winline-3.C
@@ -1,4 +1,5 @@
 // { dg-options "-Winline -O" }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 #include <vector>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
index e4d3232063d3..1eb29e030886 100644
--- a/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
+++ b/gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
@@ -1,5 +1,6 @@
 // PR c++/85710
 // { dg-additional-options -Wmemset-elt-size }
+// { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
 
 #include <cstring>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
index 29414e00e366..28602822d79c 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 
 #include<list>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
index 9ea619877059..c01aaf770629 100644
--- a/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
+++ b/gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-escape.C
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -Wstrict-aliasing" } */
+/* { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 #include <list>
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
index 8173e601d4b2..51238dc6297c 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
@@ -1,7 +1,8 @@
 /* PR middle-end/97595 - bogus -Wstringop-overflow due to DECL_SIZE_UNIT
    underreporting field size
    { dg-do compile { target c++11 } }
-   { dg-options "-O2 -Wall -Wsystem-headers" } */
+   { dg-options "-O2 -Wall -Wsystem-headers" }
+   { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } */
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
index d0ef5e73f937..7666fa388ac1 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overflow-8.C
@@ -1,5 +1,6 @@
 // PR c++/103534
 // { dg-additional-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
index f7ba61783da9..65874be855d3 100644
--- a/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wstringop-overread-1.C
@@ -1,6 +1,7 @@
 // PR middle-end/98994
 // { dg-do compile }
 // { dg-additional-options "-Wstringop-overread -O2" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
index 1bb0639ee300..41232c083c18 100644
--- a/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
+++ b/gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
@@ -2,6 +2,7 @@
 // { dg-do compile }
 // { dg-require-effective-target c++17 }
 // { dg-options "-O2 -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <algorithm>
 #include <memory>
diff --git a/gcc/testsuite/g++.dg/warn/format1.C b/gcc/testsuite/g++.dg/warn/format1.C
index 27bc414b098a..fec23e625253 100644
--- a/gcc/testsuite/g++.dg/warn/format1.C
+++ b/gcc/testsuite/g++.dg/warn/format1.C
@@ -2,6 +2,7 @@
 // Origin: Joseph Myers <jsm28@cam.ac.uk>.
 // { dg-do compile }
 // { dg-options "-ansi -pedantic -Wformat" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.dg/warn/noreturn-1.C b/gcc/testsuite/g++.dg/warn/noreturn-1.C
index 17375d42eb76..2a3dbcd97f92 100644
--- a/gcc/testsuite/g++.dg/warn/noreturn-1.C
+++ b/gcc/testsuite/g++.dg/warn/noreturn-1.C
@@ -2,6 +2,7 @@
 // Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> 2002-06-18.
 // { dg-do compile }
 // { dg-options "-Wall -O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdlib abort" { ! hostedlib } }
 
 #include <cstdlib>
 
diff --git a/gcc/testsuite/g++.dg/warn/string1.C b/gcc/testsuite/g++.dg/warn/string1.C
index 9eb5fb696be5..c162bdf48660 100644
--- a/gcc/testsuite/g++.dg/warn/string1.C
+++ b/gcc/testsuite/g++.dg/warn/string1.C
@@ -1,5 +1,6 @@
 // PR c++/35652
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 int test() {
diff --git a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
index ec3a5503c804..63a53b46ec0a 100644
--- a/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
+++ b/gcc/testsuite/g++.dg/warn/uninit-pr105562.C
@@ -1,5 +1,6 @@
 // { dg-require-effective-target c++11 }
 // { dg-options "-O -Wall -fno-strict-aliasing" }
+// { dg-skip-if "requires hosted libstdc++ for regex" { ! hostedlib } }
 
 #include <regex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
index d05f48f50016..f9a7ad5b0f05 100644
--- a/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
+++ b/gcc/testsuite/g++.old-deja/g++.benjamin/15071.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 981203 bkoz
 // g++/15071
 // gcc invocation fails to link in libstdc++
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
index 79339c13de9d..1294e6c58701 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-additional-options "-fexcess-precision=fast" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed copy-ctors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
index 3c59fa64b43a..a6acd0aacf3f 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
index 93dc58cb150a..116d11827eba 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash20.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <complex>
 typedef std::complex<double> Complex;
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
index 937cb10293ba..ee7a1ffff466 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
index 80ef47180a92..bdcd1108ce13 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash38.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 /*
    I received the following message when using g++ (version 2.3.3):
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
index 392c0a0091f2..fda212a12be6 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash39.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-w" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // GROUPS passed old-abort
 //#include <GetOpt.h>
 #include <stdio.h>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
index e0664da28dd8..0b3978161a6e 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash49.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include<iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
index 1318ea6e9fef..be46b71a9c7c 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wreturn-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
index 7147c9a8e6e0..52531e6dc2c3 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed old-abort
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
index f67602d29d91..a33aa6c7592f 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/cvt1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
index 724c6f5c320c..9b1da17e3df5 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/err-msg3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed error-messages
 #include <fstream>
 #include <iomanip>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
index 62ddab15600b..a43d179ae1b1 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/nest21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nested-classes
 #include <iostream>
 #include <cstdio>
diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
index 669bd7914218..72e04f1d26b4 100644
--- a/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
+++ b/gcc/testsuite/g++.old-deja/g++.brendan/ptolemy2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ptolemy-bugs
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template24.C b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
index 0efce9ff12ec..09fdc2e644ee 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template24.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template24.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Bug: g++ doesn't find the conversion from ostream_withassign to ostream.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template31.C b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
index 81d696f2f097..45b0e6e8b7e3 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/template31.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/template31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // PRMS Id: 8569
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
index ec5156e0cd0b..9eb3c92f408c 100644
--- a/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
+++ b/gcc/testsuite/g++.old-deja/g++.jason/typeid1.C
@@ -1,4 +1,5 @@
 // { dg-do compile }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <typeinfo>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg1.C b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
index 2a87633d10a7..ea7191787bed 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Subject: argument matching depending on the def order
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arg8.C b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
index 1aba05fb2e1a..6e8a467c945f 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arg8.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arg8.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed arg-matching
 // arg-matching file
 // Message-Id: <9307081747.AA14030@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm12.C b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
index 866b47ada440..7866296aa306 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm12.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 // arm file
 // From: belley@cae.ca (Benoit Belley 3218)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm9.C b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
index ab18189dde3e..c0e5efcacbaf 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/arm9.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/arm9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed ARM-compliance
 #include        <iostream>
 enum f1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
index 4c07d4315249..dc3bc7569684 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/bad-error7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed bad-errors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
index 0a992d0b9e89..aadded80a8df 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/code-gen5.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed code-generation
 // code-gen file
 // From: "David" <norman@pi14.arc.umn.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
index cbf36cff55f5..d131a8c9ae0c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <9302052351.AA10789@harvey>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
index adc5128ea7c5..bc5bf77e0b5c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors12.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed constructors
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
index 82f70f35f063..f12972743bbd 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed constructors
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
index 0d61c49abd79..e91045874e99 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 // GROUPS passed constructors
 // ctor file
 // Message-Id: <199306151813.gD28471@mail.Germany.EU.net>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
index ee26cb5020f5..9c6de0bfe503 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed constructors
 #include <complex>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
index 0c821b589662..9f88a6e57856 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt16.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // Message-Id: <9304121647.AA25819@tnt>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
index afe138bd9699..77b000e31fcf 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt2.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 #include <cstdio>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
index e68adf02106f..bf68a0f3d694 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/cvt7.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // GROUPS passed conversions
 // cvt file
 // From: krste@icsi.berkeley.edu (Krste Asanovic)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/except5.C b/gcc/testsuite/g++.old-deja/g++.law/except5.C
index a99ad8a4833e..7a4ad287907e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/except5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/except5.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed exceptions
 // except file
 // Message-Id: <199311101607.AA11803@hsi86.hsi.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
index 7ae494b75da0..a42cf6aab98e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/missed-error2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-additional-options -fpermissive }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed missed-error
 // missed-error file
 // From: ndc!don@csvax.cs.caltech.edu (Don Erway)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/nest3.C b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
index daeaa201bd52..fdac0ece2beb 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/nest3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/nest3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed nest
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators32.C b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
index 991e38ddbc4b..577c52ca812c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators32.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators32.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed operators
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/operators4.C b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
index fc623b4fc26b..dda42aafd089 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/operators4.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/operators4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 // GROUPS passed operators
 // opr-del file
 // From: rollins@bart.ee.queensu.ca (Mark Rollins)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
index 4cfe51d7740f..077d6b21e96b 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/vbase1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed vbase
 // vbase file
 // From: pino@hubble.eecs.berkeley.edu (Jose Luis Pino)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
index 46fa08512be6..a1a105ec81ce 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/virtual3.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed virtual-functions
 // virtual file
 // From: allan@ramjet.multinet.DE (Allan Brighton)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
index 1c786feb9d14..ab5baf70c795 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
index 7abb4a85d7c0..4eb5615df737 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility10.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
index 451ef1afaf8e..9644c085fd16 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: dinh@cs.ucla.edu (Dinh Le)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
index bf7a747c705f..501855a4ba73 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility17.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Sandeep Shroff <ss@caere.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
index 539169639c3c..c926ef518d5c 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility2.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
index e3d9d1f6d002..2088432494de 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility22.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Robert Carden <carden@thoth.ics.uci.edu>
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
index 167436d00687..91931b0769b6 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility25.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: gfm@mencon.mencon.oz.au (Graham Menhennitt)
diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
index 33358b12b510..db65523fbc7e 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/visibility7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // GROUPS passed visibility
 // visibility file
 // From: Gordon Joly <G.Joly@cs.ucl.ac.uk>
diff --git a/gcc/testsuite/g++.old-deja/g++.martin/new1.C b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
index 18eb88d7c79e..68a5fd854916 100644
--- a/gcc/testsuite/g++.old-deja/g++.martin/new1.C
+++ b/gcc/testsuite/g++.old-deja/g++.martin/new1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 //Lifetime of temporaries:
 //egcs 2.92 performs cleanup for temporaries inside new expressions
 //after the new is complete, not at the end of the full expression.
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
index 33e3fa787b92..2c6d4590fc1d 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/dyncast7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 
 #include <typeinfo>
 #include <stdexcept>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
index e2c7435c5ca9..170d7bc8b1aa 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh13.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 
 #include <string>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
index 862bd6e75983..1ef7d45807eb 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/eh2.C
@@ -1,5 +1,6 @@
 // { dg-do run { xfail sparc64-*-elf arm-*-pe } }
 // { dg-options "-fexceptions" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <cstdlib>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net34.C b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
index 19a7e16bad20..cb69cfaa0c82 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net34.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net34.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/net46.C b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
index a2362325452d..b1dcd189b759 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/net46.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/net46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <cstdlib>
 #include <cstddef>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p658.C b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
index a6268a36fd76..0f52805478b7 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/p658.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p658.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // prms-id: 658
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
index 19aa3894e8cb..795aab90305a 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/rtti1.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <typeinfo>
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
index 72332f13e7a8..7a3c465781ba 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using4.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 //Build don't link
 #include <vector>
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
index 68cf2da11579..bb54b8033907 100644
--- a/gcc/testsuite/g++.old-deja/g++.ns/using6.C
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 namespace csp {
diff --git a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
index fabf0198000b..a2b9fd150263 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/defarg6.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/headers1.C b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
index 1080fe38c8ac..5d37e94082f7 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/headers1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/headers1.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 // Copyright (C) 2000 Free Software Foundation, Inc.
 // Contributed by Loren J. Rittle 07 Jun 2000 <ljrittle@acm.org>
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.other/init9.C b/gcc/testsuite/g++.old-deja/g++.other/init9.C
index 0194cd1b49a9..d38f978975e6 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/init9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/init9.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 
 // Based on a testcase submitted by Tudor Hulubei <tudor@cs.unh.edu>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline14.C b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
index 1bd74b4ac737..473a8f078724 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline14.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline14.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline2.C b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
index f1d19626685f..4a9499acd83a 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline2.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O2 -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for cmath" { ! hostedlib } }
 // Origin: Martin Reinecke <martin@MPA-Garching.MPG.DE>
 
 #include <cmath>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline7.C b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
index 626000039c57..410351f11b43 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline7.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline7.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Origin: Mark Mitchell <mark@codesourcery.com>
 
 #include <list>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/inline8.C b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
index c12a8f74a901..d45a359c96ca 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/inline8.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/inline8.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O1" }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 // Origin: Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
 
 #include <map>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
index b34eae05ebd4..a16394fd4816 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/optimize2.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 26 May 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
index fa9e37b378c7..ecf2e1bbe2fc 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/sibcall1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
index 6b2999cb95a2..6beb513bba92 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/unchanging1.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O2" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <complex>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
index 9afeae09aaf3..c5ce84f5bff6 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/crash68.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "mangled name" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // 
 // Copyright (C) 2001 Free Software Foundation, Inc.
 // Contributed by Nathan Sidwell 25 Jul 2001 <nathan@codesourcery.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
index c0495233af81..e498c3b8396a 100644
--- a/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
+++ b/gcc/testsuite/g++.old-deja/g++.pt/memtemp100.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Origin: philippeb@videotron.ca
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
index b98e8da6b1e5..44e7eac73055 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb109.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for map" { ! hostedlib } }
 #include<map>
 #include<iostream>
 #include<vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
index 9c7ca6bfaed9..a5dbfa4f8e55 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb113.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class X : public std::streambuf
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
index e7065b269fe6..fe44e06ce207 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb115.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 
 #include <iostream>
 #include <typeinfo>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
index 0be035ae867c..728d9c209fbc 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb124.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for stdexcept" { ! hostedlib } }
 #include <stdexcept>
 class X : public std::runtime_error {
   X ();
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
index d8d28b36a634..1cd9abbd2dae 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb127.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // Gets ICE 40.
 
 #include <vector>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
index a8dae01afe2d..c42f88a79644 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
index 3150422e3c50..51ffcbeedc4b 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb129a.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for list" { ! hostedlib } }
 // Gives ICE on EGCS release branch as of 98/06/08 on i686-pc-linux-gnulibc1)
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>    
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de> 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
index 20175cd9d3fd..932f24911095 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb130.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wall -Wno-deprecated" }
+// { dg-skip-if "requires hosted libstdc++ for backward/hash_set" { ! hostedlib } }
 // Gives spurious warnings when compiled with -Wall
 // EGCS 06/08/98 i686-pc-linux-gnulibc1
 // Message-Id: <199806081358.PAA02505@achibm5.chemie.uni-karlsruhe.de>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
index e5992aa66cbf..b432b2da6b74 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb132.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Wall  -fgcse" }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 // From: Klaus-Georg Adams <Klaus-Georg.Adams@chemie.uni-karlsruhe.de> 
 // Reported against EGCS snaps 98/06/28.
 //
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
index 1cb9fd15c835..c1d94498c723 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb15.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 #include<cstddef>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
index a061fc016cf3..0c615d497465 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb21.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
index 5e2a3ee45b3a..0abbce2ed776 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb24.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 template < class T >
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
index 0df2e10ae793..054e53179c41 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb27.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-Wno-deprecated -Wno-return-type" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 /* bug.cc */
 /* simple program to demonstrate the bug with named return values in gcc
 */
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
index 89f19d57c996..7f93d76f54f9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb28.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
index bea0d12e1778..c1880c8571e9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb29.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 using namespace std;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
index b7487e97ba5b..91e7e730a612 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb3.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for complex" { ! hostedlib } }
 #include <complex>
 template<class T>
 class Vec {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
index e0f290b7f0be..b22d482e2bfe 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb30.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 
 class bifstream : public std::ifstream {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
index 1e3c8f02d16d..49c90679da34 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb31.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include<iostream>
 
 int main() {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
index 50328ad49004..005f9c9bc84b 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb33.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for fstream" { ! hostedlib } }
 #include <fstream>
 #include <cstdio>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
index 56e67b300820..0c5ebf9a902e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb36.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 using namespace std;
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
index 144d3fff7ee5..24aa24b037d1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb39.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cctype" { ! hostedlib } }
 #include <cctype>
 #include <iostream>
 #include <sstream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
index 99c2ca979ad8..474784133245 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb4.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Error: Internal Compiler Error in GCC 2.7.2 and EGCS 1998/05/28 snapshot.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
index 9f6ee5f43e0e..37422fbd6ecd 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb41.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <iterator>
 #include <string>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
index c54050c3c7aa..e4d16c7fb723 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb43.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 // All the pointer_to_binary_function cases used to fail because g++
 // couldn't handle converting an overloaded function to a class type.
 // The first one should still fail because it requires an implicit conversion
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
index b21343c478ac..ca8fcc372b23 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb44.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for cstdio" { ! hostedlib } }
 // spurious 'const' in error.
 // For egcs-2.91.34, the warning message refers to
 // class ostream & operator <<(class ostream &, const class Vector<T> &)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
index cbe482e90b80..7102504a1ae1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb46.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 
 class A1 {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
index 1e71ca82e6db..de8916770a56 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb54.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 #include <iomanip>
 #include <iostream>
 #include <cstdlib>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
index c1e2400ed9a3..2486a0688bb2 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb55.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for sstream" { ! hostedlib } }
 // Since the constructor is in streambuf.h, additional diagnostics are
 // produced, which are not really supported in the old-deja framework
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
index 84ccff26d163..7fadf9a33a93 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb59.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #define INC_FUNCTIONAL  1
 #define USE_STATIC_CAST 1
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
index ea80a4ce2e1c..f81861ecade9 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb60.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
 #include <string>
 
 class t {
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
index bffba04800f0..8f6094a1fb1e 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb62.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 void f(void)
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
index 3088593656e1..d9dc0a03548c 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb66.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
 #include <cassert>
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
index 4785305ff530..83fa20db9216 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb7.C
@@ -1,4 +1,5 @@
 // { dg-do assemble  }
+// { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
 #include <vector>
 
 class T
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
index bf9cf598d9c9..6fcad3624221 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb73.C
@@ -1,5 +1,6 @@
 // { dg-do run  }
 // { dg-options "-O -Wall" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Depletes VM.
 
 #include <iostream>
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
index 358c186ab915..553fc539eaff 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb77.C
@@ -1,4 +1,5 @@
 // { dg-do run  }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 #include <iostream>
 #include <sstream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
index 1c1ad3e30677..9597d2e71fa1 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb79.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-prune-output "note" }
+// { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } }
 // Makes bogus x86 assembly code.
 #include <iostream>
 
diff --git a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
index c437b26dbd11..c31d4cfb75cb 100644
--- a/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
+++ b/gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
@@ -1,5 +1,6 @@
 // { dg-do assemble  }
 // { dg-options "-O -Winline" }
+// { dg-skip-if "requires hosted libstdc++ for iomanip" { ! hostedlib } }
 // Bug: g++ wouldn't inline op<< because it was an explicit instantiation.
 // Origin: Jason Merrill <jason@cygnus.com>
 
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 50e8004f13bd..ddc19185decf 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -865,6 +865,24 @@ proc check_effective_target_freestanding { } {
     return 0
 }
 
+# Return 1 if a hosted implementation of libstdc++ is available
+# (i.e. not freestanding).  Language must be c++.
+proc check_effective_target_hostedlib { } {
+    if [check_effective_target_freestanding] {
+        return 0
+    }
+    if [check_effective_target_c++] {
+        return [check_no_compiler_messages hostedlib assembly {
+            #include <bits/c++config.h>
+            #if ! _GLIBCXX_HOSTED
+            #error not hosted
+            #endif
+	    int hosted;
+        }]
+    }
+    return 1
+}
+
 # Check to see that file I/O functions are available.
 proc check_effective_target_fileio { } {
     return [check_no_compiler_messages fileio_available executable {

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

end of thread, other threads:[~2023-11-23 11:46 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-23 11:46 [gcc(refs/users/aoliva/heads/testme)] testsuite: introduce hostedlib effective target Alexandre Oliva
  -- strict thread matches above, loose matches on Subject: below --
2023-11-19  4:44 Alexandre Oliva
2023-11-15  2:26 Alexandre Oliva
2023-11-09  1:58 Alexandre Oliva
2023-11-08 23:48 Alexandre Oliva
2023-11-08 19:22 Alexandre Oliva
2023-11-07 11:33 Alexandre Oliva
2023-11-06 18:06 Alexandre Oliva
2023-11-06  6:32 Alexandre Oliva
2023-11-05  6:15 Alexandre Oliva
2023-10-31 13:16 Alexandre Oliva

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).