From ea297b390f9ce46506a9f5b046c3ab6f1baeba05 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Fri, 6 Oct 2017 19:12:30 +0100 Subject: [PATCH] fishdescriptor: Allow "preloaded" Signed-off-by: Ian Jackson --- fishdescriptor/greenend/fishdescriptor/indonor.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fishdescriptor/greenend/fishdescriptor/indonor.py b/fishdescriptor/greenend/fishdescriptor/indonor.py index f77a4da..b366e23 100644 --- a/fishdescriptor/greenend/fishdescriptor/indonor.py +++ b/fishdescriptor/greenend/fishdescriptor/indonor.py @@ -27,12 +27,14 @@ def _string_escape_for_c(s): out += chr(c) return out -class DonorImplementation(): +class DonorImplementation(preloaded=False): def __init__(self): # works on the current gdb.Inferior # ideally should be reused if the same process is targetd self._open = None self._sym = None + if preloaded: + self._sym = 'fishdescriptor_donate' def _func(self, functype, funcname, realargs): expr = '((%s) %s) %s' % (functype, funcname, realargs) @@ -58,12 +60,12 @@ class DonorImplementation(): def _dlsym(self): if self._sym is not None: return + self._dlopen() self._sym = self._dlfunc('void* (*)(void*, const char*)' 'dlsym', '(%s, "fishdescriptor_donate")' % self._open) def donate(self, path, fds): - self._dlopen() self._dlsym() r = self._func('int (*)(const char*, const int*)', self._sym, -- 2.30.2