From d5535065bc1559968ee76a1c08b05ebe5e636c4d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 14 Jul 2021 22:45:13 +0200 Subject: do not add SONAME to shared modules For an ELF targets, shared_module() builds a module with SONAME field (using -Wl,-soname argument). This is wrong: only the shared_library() needs SONAME, while shared_module() does not. Moreover, tools such as debian's dpkg-shlibdeps use presence of SONAME field as an indicator that this is shared library as opposed to shared module (e.g., for the module it is okay to have unresolved symbols which are imported from the executable which loads the module, while a library should have all symbols resolved). This was in fact already the behavior on Darwin; extend it to ELF targets as well. Fixes: #8746 Reported-by: Michael Tokarev Signed-off-by: Paolo Bonzini --- mesonbuild/linkers/linkers.py | 2 -- 1 file changed, 2 deletions(-) (limited to 'mesonbuild/linkers/linkers.py') diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index c26edda..0aa4105 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -751,8 +751,6 @@ class AppleDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], is_shared_module: bool) -> T.List[str]: - if is_shared_module: - return [] install_name = ['@rpath/', prefix, shlib_name] if soversion is not None: install_name.append('.' + soversion) -- cgit v1.1 From 3efed376c376b6275024c5600b30a6c5e12edf97 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 14 Jul 2021 22:52:26 +0200 Subject: linkers: remove is_shared_module argument to get_soname_args The argument is now unused, drop it. --- mesonbuild/linkers/linkers.py | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) (limited to 'mesonbuild/linkers/linkers.py') diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py index 0aa4105..e73746a 100644 --- a/mesonbuild/linkers/linkers.py +++ b/mesonbuild/linkers/linkers.py @@ -517,8 +517,7 @@ class DynamicLinker(metaclass=abc.ABCMeta): return ([], set()) def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] @@ -613,8 +612,7 @@ class GnuLikeDynamicLinkerMixin: return self._apply_prefix('--fatal-warnings') def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: m = env.machines[self.for_machine] if m.is_windows() or m.is_cygwin(): # For PE/COFF the soname argument has no effect @@ -749,8 +747,7 @@ class AppleDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): return self._apply_prefix('-fatal_warnings') def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: install_name = ['@rpath/', prefix, shlib_name] if soversion is not None: install_name.append('.' + soversion) @@ -836,8 +833,7 @@ class WASMDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dyna return ['-s', 'ERROR_ON_UNDEFINED_SYMBOLS=1'] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: raise MesonException(f'{self.id} does not support shared libraries.') def get_asneeded_args(self) -> T.List[str]: @@ -879,8 +875,7 @@ class CcrxDynamicLinker(DynamicLinker): return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] @@ -919,8 +914,7 @@ class Xc16DynamicLinker(DynamicLinker): return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] def build_rpath_args(self, env: 'Environment', build_dir: str, from_dir: str, @@ -963,8 +957,7 @@ class CompCertDynamicLinker(DynamicLinker): return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: raise MesonException(f'{self.id} does not support shared libraries.') def build_rpath_args(self, env: 'Environment', build_dir: str, from_dir: str, @@ -1062,8 +1055,7 @@ class PGIDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] def get_std_shared_lib_args(self) -> T.List[str]: @@ -1164,8 +1156,7 @@ class VisualStudioLikeLinkerMixin: return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] def import_library_args(self, implibname: str) -> T.List[str]: @@ -1303,8 +1294,7 @@ class SolarisDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker): return (self._apply_prefix(f'-rpath,{paths}'), rpath_dirs_to_remove) def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: sostr = '' if soversion is None else '.' + soversion return self._apply_prefix(f'-soname,{prefix}{shlib_name}.{suffix}{sostr}') @@ -1420,6 +1410,5 @@ class CudaLinker(PosixDynamicLinkerMixin, DynamicLinker): return [] def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str, - suffix: str, soversion: str, darwin_versions: T.Tuple[str, str], - is_shared_module: bool) -> T.List[str]: + suffix: str, soversion: str, darwin_versions: T.Tuple[str, str]) -> T.List[str]: return [] -- cgit v1.1