If the driver line starts with a / then no lib prefix is applied
and the full path is passed to dlopen. This lets a completely
contained installation exist that relies on RPATH for the binaries
and this mechanism for the drivers.

Signed-off-by: Jason Gunthorpe <[email protected]>
---
 src/init.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

This is for libibverbs.. It makes things much easier if you do not
install libibverbs into the system library search path (ie an
installation under /opt)

The revised device line would look like:
device /opt/foo/lib/libml4

diff --git a/src/init.c b/src/init.c
index 82dfae4..441f80a 100644
--- a/src/init.c
+++ b/src/init.c
@@ -184,7 +184,9 @@ static void load_driver(const char *name)
 #define IBV_QUOTE(x)   __IBV_QUOTE(x)
 
        if (asprintf(&so_name,
-                    "lib%s-" IBV_QUOTE(IBV_DEVICE_LIBRARY_EXTENSION) ".so",
+                    (name[0] == '/'?
+                     "%s-" IBV_QUOTE(IBV_DEVICE_LIBRARY_EXTENSION) ".so":
+                     "lib%s-" IBV_QUOTE(IBV_DEVICE_LIBRARY_EXTENSION) ".so"),
                     name) < 0) {
                fprintf(stderr, PFX "Warning: couldn't load driver '%s'.\n",
                        name);
-- 
1.6.0.4

_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to