diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index d00fd7a4b..0b8927359 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -606,6 +606,9 @@ class GnuLikeDynamicLinkerMixin(DynamicLinkerBase): "boot_application": "16", } + def get_accepts_rsp(self) -> bool: + return True + def get_pie_args(self) -> T.List[str]: return ['-pie'] @@ -849,9 +852,6 @@ class GnuDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dynam """Representation of GNU ld.bfd and ld.gold.""" - def get_accepts_rsp(self) -> bool: - return True - class GnuGoldDynamicLinker(GnuDynamicLinker): diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py index 726252611..e790ca493 100644 --- a/unittests/allplatformstests.py +++ b/unittests/allplatformstests.py @@ -5010,3 +5010,12 @@ class AllPlatformTests(BasePlatformTests): # The first supported std should be selected self.setconf('-Dcpp_std=c++11,gnu++11,vc++11') self.assertEqual(self.getconf('cpp_std'), 'c++11') + + def test_rsp_support(self): + env = get_fake_env() + cc = detect_c_compiler(env, MachineChoice.HOST) + has_rsp = cc.linker.id in { + 'ld.bfd', 'ld.gold', 'ld.lld', 'ld.mold', 'ld.qcld', 'ld.wasm', + 'link', 'lld-link', 'mwldarm', 'mwldeppc', 'optlink', 'xilink', + } + self.assertEqual(cc.linker.get_accepts_rsp(), has_rsp)