-- REVISED NOTE -- > Hm. s_lock.h does define TAS() in terms of InterlockedCompareExchange() if WIN32_ONLY_COMPILER is defined ... but that code hasn't changed in quite a long time. It > seems like the combination of an extension built with WIN32_ONLY_COMPILER and a core built without that flag should never have worked, if the core is what has to link > in InterlockedCompareExchange.
> I wonder if there is something you're doing that results in inlining a spinlock call given the 9.4 headers, but did not previously. Can you narrow down what part of > your code is giving rise to the undefined reference? > regards, tom lane Tom, Does it with all extensions, not just PostGIS (before (9.3.4 and before) I could swap between say for example hstore mingw compiled and VC compiled and had no issue) And this extra InterlockedComparedExchange export did not appear in the extension dlls. The InterlockedCompareExchange@ export as you guessed shows in the extension .dll postgres.exe reference but not clear where to tell where that is coming thru. I found this thread which sounds like the situation I am running into, but not sure why it would be suddenly an issue now unless nothing is being exported anymore http://sourceforge.net/p/mingw-w64/mailman/message/31128245/ I'm compiling PostgreSQL the same way in both 9.3 and 9.4: With something that looks like this: export MINGHOST=i686-w64-mingw32 PG_VER=9.4 ./configure --prefix=${PROJECTS}/postgresql/rel/pg${PG_VER}\ --build=${MINGHOST} \ --with-pgport=8443 --disable-float8-byval --enable-cassert --enable-debug \ --enable-integer-datetimes --without-zlib With just the PG_VER being different. What I did notice is that in 9.3, the config.log shows this for 9.4: LDFLAGS=-Wl,--allow-multiple-definition -Wl,--disable-auto-import -Wl,--as-needed and 9.3: LDFLAGS=-Wl,--allow-multiple-definition -Wl,--as-needed I read thru the threads on mailing list and confirmed it was an intended change. I thought maybe the --disable-auto-import was doing something. Trying to override the flag with When I do any of the below did not work export LDFLAGS=-Wl,--allow-multiple-definition -Wl,--enable-auto-import -Wl,--as-needed export LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-auto-import -Wl,--as-needed" export LDFLAGS=-Wl,--allow-multiple-definition -Wl,--as-needed However I was able to override it by changing the: /src/template/win32 (trying both ) LDFLAGS="-Wl,--allow-multiple-definition -Wl,--enable-auto-import" And the old 9.3.4 LDFLAGS="-Wl,--allow-multiple-definition" And concluded that was not the issue since the export of this symbol still happens. Any other thoughts? Thanks, Regina -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers