diff options
author | Pino Toscano <toscano.pino@tiscali.it> | 2014-06-03 14:50:05 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2014-06-05 23:57:09 +0200 |
commit | b5cd09805445bbaee1a8a8198611244281e62861 (patch) | |
tree | 8a5c04f6e5b529666a5dd4b359671bbe7e285f75 /lib | |
parent | 7f36828fccdac860e6ef06424e9b486aec1af00f (diff) | |
download | samba-b5cd09805445bbaee1a8a8198611244281e62861.tar.gz samba-b5cd09805445bbaee1a8a8198611244281e62861.tar.xz samba-b5cd09805445bbaee1a8a8198611244281e62861.zip |
swrap: use LIBC_SO from GNU libc, if available
Look for gnu/lib-names.h and use the LIBC_SO define to dlopen libc, so
the right library is loaded without manually searching for libc.so.N.
Signed-off-by: Pino Toscano <toscano.pino@tiscali.it>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/socket_wrapper/socket_wrapper.c | 8 | ||||
-rw-r--r-- | lib/socket_wrapper/wscript | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c index 95643aa7bd1..38f7a449f92 100644 --- a/lib/socket_wrapper/socket_wrapper.c +++ b/lib/socket_wrapper/socket_wrapper.c @@ -73,6 +73,9 @@ #include <stdarg.h> #include <stdbool.h> #include <unistd.h> +#ifdef HAVE_GNU_LIB_NAMES_H +#include <gnu/lib-names.h> +#endif enum swrap_dbglvl_e { SWRAP_LOG_ERROR = 0, @@ -418,6 +421,11 @@ static void *swrap_load_lib_handle(enum swrap_lib lib) /* FALL TROUGH */ case SWRAP_LIBC: handle = swrap.libc_handle; +#ifdef LIBC_SO + if (handle == NULL) { + handle = dlopen(LIBC_SO, flags); + } +#endif if (handle == NULL) { for (handle = NULL, i = 10; handle == NULL && i >= 0; i--) { char soname[256] = {0}; diff --git a/lib/socket_wrapper/wscript b/lib/socket_wrapper/wscript index 3615fa87c95..fba50986c2d 100644 --- a/lib/socket_wrapper/wscript +++ b/lib/socket_wrapper/wscript @@ -41,6 +41,7 @@ def configure(conf): conf.CHECK_HEADERS('sys/signalfd.h') conf.CHECK_HEADERS('sys/eventfd.h') conf.CHECK_HEADERS('sys/timerfd.h') + conf.CHECK_HEADERS('gnu/lib-names.h') conf.CHECK_STRUCTURE_MEMBER('struct msghdr', 'msg_control', |