diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 36aaf3807649dc7ec5947e22de8da930c9f83c20..7fe06300943f735294fe09b46fa423741c88f841 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -829,6 +829,11 @@ def test_common_work(watcher: testutil.Watcher,
                 all_ways = [WayName('ghci')]
             else:
                 all_ways = []
+        elif func in [makefile_test, run_command]:
+            # makefile tests aren't necessarily runtime or compile-time
+            # specific. Assume we can run them in all ways. See #16042 for what
+            # happened previously.
+            all_ways = config.compile_ways + config.run_ways
         else:
             all_ways = [WayName('normal')]
 
diff --git a/testsuite/tests/llvm/should_run/subsections_via_symbols/Makefile b/testsuite/tests/llvm/should_run/subsections_via_symbols/Makefile
index c108a37d98c47c155dff2136223376a8fb02e774..ab81b8ceb592e85ff966f4de77fb599ef15186d2 100644
--- a/testsuite/tests/llvm/should_run/subsections_via_symbols/Makefile
+++ b/testsuite/tests/llvm/should_run/subsections_via_symbols/Makefile
@@ -6,8 +6,8 @@ include $(TOP)/mk/test.mk
 HCFLAGS = -O2 -fllvm
 HCINC = $(TOP)/../includes
 
-.PHONY: subsections_via_symbols_test
-subsections_via_symbols_test:
+.PHONY: subsections_via_symbols
+subsections_via_symbols:
 	'$(TEST_HC)' -o SubsectionsViaSymbols.o SubsectionsViaSymbols.hs $(HCFLAGS) -staticlib
 	'$(TEST_HC)' -o subsections_via_symbols SubsectionsViaSymbols subsections_via_symbols.m $(HCFLAGS) -optl -dead_strip -no-hs-main
 	./subsections_via_symbols
diff --git a/testsuite/tests/llvm/should_run/subsections_via_symbols/all.T b/testsuite/tests/llvm/should_run/subsections_via_symbols/all.T
index 68ade25e9908624be2aa3d2a76b4f9aee133566a..16a30e6f0f40c71827c3cf3b1c0aa579f273784e 100644
--- a/testsuite/tests/llvm/should_run/subsections_via_symbols/all.T
+++ b/testsuite/tests/llvm/should_run/subsections_via_symbols/all.T
@@ -1,16 +1,11 @@
-if config.os == 'darwin':
-  only_darwin = normal
-else:
-  only_darwin = skip
-
-def f( name, opts ):
-  opts.only_ways = ['optllvm', 'llvm', 'debugllvm']
-
-setTestOpts(f)
-
 # Note [_ffi_call_unix64]
+# ~~~~~~~~~~~~~~~~~~~~~~~
 #
 # Please refer to https://gitlab.haskell.org/ghc/ghc/issues/5019
 # for the subsections_via_symbols.stderr
 
-test('subsections_via_symbols', [only_darwin], makefile_test, [])
+test('subsections_via_symbols',
+     [when(not opsys('darwin'), skip),
+      only_ways(['optllvm', 'llvm', 'debugllvm']),
+      extra_files(['SubsectionsViaSymbols.hs'])],
+     makefile_test, [])
diff --git a/testsuite/tests/plugins/all.T b/testsuite/tests/plugins/all.T
index acc796808c309376762568174a7aafa155aaef9c..4ca732e3f502ebb584063429ccdec7bbba955dd9 100644
--- a/testsuite/tests/plugins/all.T
+++ b/testsuite/tests/plugins/all.T
@@ -167,6 +167,7 @@ test('plugin-recomp-flags',
 test('plugin-recomp-change',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
       only_ways([config.ghc_plugin_way]),
+      when(compiler_debugged(), expect_broken_for(17308, ['dyn'])),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}')
       ],
      makefile_test, [])
@@ -174,6 +175,7 @@ test('plugin-recomp-change',
 test('plugin-recomp-change-prof',
      [extra_files(['plugin-recomp/', 'plugin-recomp-test.hs']),
       only_ways([config.ghc_plugin_way]),
+      when(compiler_debugged(), expect_broken_for(17308, ['dyn'])),
       pre_cmd('$MAKE -s --no-print-directory -C plugin-recomp package.plugins01 TOP={top}'),
       when(not config.have_profiling,skip)
       ],
diff --git a/testsuite/tests/plugins/plugin-recomp-impure.stdout b/testsuite/tests/plugins/plugin-recomp-impure.stdout
index d282cfea8f6eb727c5fbdb23fd251fb0b05c50de..4a2c0aded6fbac714409bdf1fcc13a5c707275ab 100644
--- a/testsuite/tests/plugins/plugin-recomp-impure.stdout
+++ b/testsuite/tests/plugins/plugin-recomp-impure.stdout
@@ -1,4 +1,4 @@
 [1 of 1] Compiling Main             ( plugin-recomp-test.hs, plugin-recomp-test.o )
 Linking plugin-recomp-test ...
-[1 of 1] Compiling Main             ( plugin-recomp-test.hs, plugin-recomp-test.o ) [Plugin forced recompilation]
+[1 of 1] Compiling Main             ( plugin-recomp-test.hs, plugin-recomp-test.o ) [Impure plugin forced recompilation]
 Linking plugin-recomp-test ...
diff --git a/testsuite/tests/quasiquotation/all.T b/testsuite/tests/quasiquotation/all.T
index a48b0f102f833c42ab26024cbf4e05744a83ad6b..e8320a9f9a6b52fdf5e9e40eb7433af7f1b43cc5 100644
--- a/testsuite/tests/quasiquotation/all.T
+++ b/testsuite/tests/quasiquotation/all.T
@@ -6,5 +6,7 @@ test('T7918',
       only_ways([config.ghc_th_way]), unless(have_dynamic(), skip)],
      compile_and_run, ['-package ghc ' + config.ghc_th_way_flags])
 test('T14028',
-     [req_interp, only_ways([config.ghc_th_way])],
+     [req_interp,
+      only_ways([config.ghc_th_way]),
+      when(opsys('linux') and arch('x86_64'), expect_broken_for(17300, ['dyn']))],
      makefile_test, ['T14028'])
diff --git a/testsuite/tests/runghc/T-signals-child.hs b/testsuite/tests/runghc/T-signals-child.hs
index ee36f62121beaaafa789e6fcef89b7dcc172ba49..ddc21278fcc1861dd1ac3d879c830e1ef6b115da 100644
--- a/testsuite/tests/runghc/T-signals-child.hs
+++ b/testsuite/tests/runghc/T-signals-child.hs
@@ -21,7 +21,7 @@ main = do
 
 runParent :: FilePath -> IO ()
 runParent runghc = do
-    (Just inH, Just outH, Nothing, ph@(ProcessHandle mvar _)) <-
+    (Just inH, Just outH, Nothing, ph@(ProcessHandle mvar _ _)) <-
         createProcess (proc runghc ["T-signals-child.hs", "child"])
             { std_in = CreatePipe
             , std_out = CreatePipe
diff --git a/testsuite/tests/runghc/all.T b/testsuite/tests/runghc/all.T
index 1b1b9eac23b3e548efbf1f0cee655da7de978f78..79c9f6fe5cbc61468e9abc5d0c9504d495706072 100644
--- a/testsuite/tests/runghc/all.T
+++ b/testsuite/tests/runghc/all.T
@@ -9,5 +9,6 @@ test('T6132', [when(opsys('darwin'), expect_broken(6132))], compile, [''])
 test('T-signals-child',
      [ when(opsys('mingw32'), skip), req_interp
      , only_ways(['threaded1', 'threaded2'])
+     , fragile_for(17307, ['threaded1', 'threaded2'])
      ],
      makefile_test, [])
diff --git a/testsuite/tests/simplCore/should_compile/T7995.stdout b/testsuite/tests/simplCore/should_compile/T7995.stdout
index 899ddff441917e74b9e97f6f72964072b467e62c..ee40d8798abec3018f3665a6c648e20acdbb94e7 100644
--- a/testsuite/tests/simplCore/should_compile/T7995.stdout
+++ b/testsuite/tests/simplCore/should_compile/T7995.stdout
@@ -1 +1 @@
-Rule fired: text/str
+Rule fired: text/str (Pretty)
diff --git a/testsuite/tests/stranal/should_compile/T13031.stdout b/testsuite/tests/stranal/should_compile/T13031.stdout
index b6b9f614585ef6e6917a0c758cc8e6ba6fdd5c86..22ef963cea4820fadcb628fc2eeb654e4d7ca536 100644
--- a/testsuite/tests/stranal/should_compile/T13031.stdout
+++ b/testsuite/tests/stranal/should_compile/T13031.stdout
@@ -1,4 +1,2 @@
-echo hello
 hello
-'/5playpen/simonpj/HEAD-4/inplace/test   spaces/ghc-stage2' -dcore-lint -dcmm-lint -no-user-package-db -rtsopts  -fno-warn-missed-specialisations -fshow-warning-groups -fdiagnostics-color=never -dno-debug-output -c -fforce-recomp T13031.hs -ddump-simpl | grep 'Arity='
-[GblId, Arity=1, Caf=NoCafRefs]
+[GblId, Arity=1, Caf=NoCafRefs, Unf=OtherCon []]
diff --git a/testsuite/tests/stranal/should_compile/T16029.stdout b/testsuite/tests/stranal/should_compile/T16029.stdout
index c06ac7c8b3a69649279cd75c4f5b312df343314b..5aae1ff281ce3f292ec67e7bd0d8372ef5a1e396 100644
--- a/testsuite/tests/stranal/should_compile/T16029.stdout
+++ b/testsuite/tests/stranal/should_compile/T16029.stdout
@@ -1,4 +1,4 @@
-T16029.$WMkT [InlPrag=INLINE[2]] :: Int -> Int -> T
+T16029.$WMkT [InlPrag=INLINE[0]] :: Int -> Int -> T
          Tmpl= \ (dt [Occ=Once!] :: Int) (dt [Occ=Once!] :: Int) ->
   = \ (dt [Occ=Once!] :: Int) (dt [Occ=Once!] :: Int) ->
   :: GHC.Prim.Int# -> GHC.Prim.Int#