From: Ian Jackson Date: Fri, 6 Oct 2017 18:11:13 +0000 (+0100) Subject: fishdescriptor: Use os or dl for RTLD_now X-Git-Tag: archive/debian/6.0.0~1^2~36 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=1fe58c7ec5d3cc1e7b052725410b2bc1359fdb13 fishdescriptor: Use os or dl for RTLD_now Suggestion by Colin Watson. Signed-off-by: Ian Jackson --- diff --git a/fishdescriptor/greenend/fishdescriptor/indonor.py b/fishdescriptor/greenend/fishdescriptor/indonor.py index b9e9053..f77a4da 100644 --- a/fishdescriptor/greenend/fishdescriptor/indonor.py +++ b/fishdescriptor/greenend/fishdescriptor/indonor.py @@ -2,6 +2,19 @@ # class for use inside gdb which is debugging the donor process import gdb +import os + +try: + rtld_now = os.RTLD_NOW +except AttributeError: + try: + import dl + rtld_now = dl.RTLD_NOW + except ImportError: + # some installations lack dl, it seems + # https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1721840 + # bodge: + rtld_now = 2 def _string_escape_for_c(s): if not isinstance(s, bytes): @@ -38,8 +51,6 @@ class DonorImplementation(): def _dlopen(self): if self._open is not None: return - rtld_print_cmd = ['fishdescriptor','--print-rtld-now']; - rtld_now = subprocess.check_output(rtld_print_cmd).rstrip('\n') o = self._dlfunc('void* (*)(const char*, int)', 'dlopen', '("libfishdescriptor-donate.so.1.0", %s)' % rtld_now)