summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/ctypes/util.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
index f713353..fc17a2f 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")