@@ -23,7 +23,10 @@ src_librdmacm_la_LDFLAGS = -version-info 1 -export-dynamic \
src_librdmacm_la_DEPENDENCIES = $(srcdir)/src/librdmacm.map
src_librspreload_la_SOURCES = src/preload.c src/indexer.c
-src_librspreload_la_LDFLAGS = -version-info 1 -export-dynamic
+src_librspreload_la_LDFLAGS = -version-info 1
+if HAVE_LD_VERSION_SCRIPT
+ src_librspreload_la_LDFLAGS += -Wl,--version-script=$(srcdir)/src/librspreload.map
+endif
src_librspreload_la_LIBADD = $(top_builddir)/src/librdmacm.la
bin_PROGRAMS = examples/ucmatose examples/rping examples/udaddy examples/mckey \
new file mode 100644
@@ -0,0 +1,33 @@
+{
+ /* FIXME: It is probably not a great idea to not tag these with the
+ proper symbol version from glibc, at least if glibc ever changes
+ the signature this will go sideways.. */
+ global:
+ accept;
+ bind;
+ close;
+ connect;
+ dup2;
+ fcntl;
+ getpeername;
+ getsockname;
+ getsockopt;
+ listen;
+ poll;
+ read;
+ readv;
+ recv;
+ recvfrom;
+ recvmsg;
+ select;
+ send;
+ sendfile;
+ sendmsg;
+ sendto;
+ setsockopt;
+ shutdown;
+ socket;
+ write;
+ writev;
+ local: *;
+};
@@ -356,7 +356,7 @@ static enum fd_type fd_close(int index, int *fd)
return type;
}
-void getenv_options(void)
+static void getenv_options(void)
{
char *var;
@@ -521,7 +521,7 @@ err:
/*
* Use defaults on failure.
*/
-void set_rsocket_options(int rsocket)
+static void set_rsocket_options(int rsocket)
{
if (sq_size)
rsetsockopt(rsocket, SOL_RDMA, RDMA_SQSIZE, &sq_size, sizeof sq_size);
Since librspreload is a LD_PRELOAD library it should only export symbols it intends to override. The following internal symbols were leaking out: getenv_options idm_clear idm_set idx_insert idx_remove idx_replace set_rsocket_options The simplest way to fix this is with a map file. Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> --- librdmacm/Makefile.am | 5 ++++- librdmacm/src/librspreload.map | 33 +++++++++++++++++++++++++++++++++ librdmacm/src/preload.c | 4 ++-- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 librdmacm/src/librspreload.map