From 6e251119046acab916e67af4775c3f13151861ff Mon Sep 17 00:00:00 2001 From: J. Ali Harlow Date: Sat, 4 Oct 2014 18:12:58 +0100 Subject: [PATCH] Only export symbols starting with razor_ in dynamic library. Apart from being good practice to avoid clashes with higher-level libraries and the application, this also fixes an obscure bug: The gnulib library is used both by librazor (the dynamic library) and by razor (the executable). In doing so, we want to have two separate copies of the library despite the code duplication this involves. Without the explicit limit to export only razor_ symbols, the razor executable under mingw64 was picking up the getopt_long function from librazor and the optind variable from libgnu which meant that it did not see optind changing. Hiding librazor's copy of getopt causes the linker to find libgnu's copy and everything works. Note that under mingw librazor-#.dll still contains undocumented (private) razor_ symbols but these will do no harm as long as nobody tries to use them. --- librazor/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/librazor/Makefile.am b/librazor/Makefile.am index 28c0d26..a25a05c 100644 --- a/librazor/Makefile.am +++ b/librazor/Makefile.am @@ -47,7 +47,7 @@ endif librazor_la_LIBADD = $(ZLIB_LIBS) types/libtypes.la $(LUA_LIBS) \ ../gl/libgnu.la $(INTLLIBS) $(EXTRA_LIBS) -librazor_la_LDFLAGS = -no-undefined \ +librazor_la_LDFLAGS = -no-undefined -export-symbols-regex '^razor_' \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) if HAVE_LUA -- 1.7.1