From: Thomas Heller Date: Fri, 14 Sep 2007 20:05:26 +0000 (+0000) Subject: ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. X-Git-Tag: v2.5.2c1~180 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5cf6ef84b9a52dab321682f3b0103d7793cc4191;p=python ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. Fixes issue #1777530; backported from trunk. --- diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index f7133538bf..fc17a2f93a 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -66,15 +66,27 @@ elif os.name == "posix": return None return res.group(0) - def _get_soname(f): - # assuming GNU binutils / ELF - if not f: - return None - cmd = "objdump -p -j .dynamic 2>/dev/null " + f - res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) - if not res: - return None - return res.group(1) + + if sys.platform == "sunos5": + # use /usr/ccs/bin/dump on solaris + def _get_soname(f): + if not f: + return None + cmd = "/usr/ccs/bin/dump -Lpv 2>/dev/null " + f + res = re.search(r'\[.*\]\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) + else: + def _get_soname(f): + # assuming GNU binutils / ELF + if not f: + return None + cmd = "objdump -p -j .dynamic 2>/dev/null " + f + res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) + if not res: + return None + return res.group(1) if (sys.platform.startswith("freebsd") or sys.platform.startswith("openbsd") diff --git a/Misc/NEWS b/Misc/NEWS index 6c87b1c61c..640ba31765 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -32,6 +32,9 @@ Core and builtins Library ------- +- Bug #1777530: ctypes.util.find_library uses dump(1) instead of + objdump(1) on Solaris. + - Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them.