From dfd41f2283bdcde0dd6a8c9427e194d55327e1e3 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Thu, 13 Aug 2020 21:52:03 -0400 Subject: [PATCH] Try fixing unixODBC deadlock with -Bsymbolic-functions This flag compels the dynamic library to prefer its own function symbols to those in the global symbol table. This behavior should let us directly call SQL* functions from inside other SQL* functions without fear of interference by the host program. --- configure.ac | 4 +--- src/odbc/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 3f77365..44d9f29 100644 --- a/configure.ac +++ b/configure.ac @@ -70,9 +70,7 @@ AC_SUBST(LFLAGS) CFLAGS="$CFLAGS -Wall -Werror" AS_CASE([$host], - [*mingw*|*cygwin*], [LDFLAGS="$LDFLAGS -no-undefined"], - [*darwin*], [], - [LDFLAGS="$LDFLAGS -Wl,--no-undefined"]) + [*mingw*|*cygwin*], [LDFLAGS="$LDFLAGS -no-undefined"], []) AS_CASE([$host], [*mingw*], [LDFLAGS="$LDFLAGS -lWs2_32"], []) dnl Enable -Wl,--as-needed by default to prevent overlinking diff --git a/src/odbc/Makefile.am b/src/odbc/Makefile.am index 2dd7b63..78558ae 100644 --- a/src/odbc/Makefile.am +++ b/src/odbc/Makefile.am @@ -4,7 +4,7 @@ lib_LTLIBRARIES = libmdbodbc.la AM_CFLAGS = -I$(top_srcdir)/include $(GLIB_CFLAGS) $(ODBC_CFLAGS) libmdbodbc_la_SOURCES = odbc.c connectparams.c libmdbodbc_la_LIBADD = ../libmdb/libmdb.la ../sql/libmdbsql.la $(ODBC_LIBS) -libmdbodbc_la_LDFLAGS = -avoid-version -export-symbols-regex '^(SQL|ODBCINST)' +libmdbodbc_la_LDFLAGS = -avoid-version -export-symbols-regex '^(SQL|ODBCINST)' -Bsymbolic-functions if FAKE_GLIB libmdbodbc_la_SOURCES += ../libmdb/fakeglib.c endif