From 1fe58c7ec5d3cc1e7b052725410b2bc1359fdb13 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 6 Oct 2017 19:11:13 +0100 Subject: [PATCH] fishdescriptor: Use os or dl for RTLD_now Suggestion by Colin Watson. Signed-off-by: Ian Jackson --- fishdescriptor/greenend/fishdescriptor/indonor.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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) -- 2.30.2