commit 912846f (HEAD, master) Author: Noah Misch AuthorDate: Sun Oct 26 18:02:55 2014 -0400 Commit: Noah Misch CommitDate: Sun Oct 26 18:17:34 2014 -0400 MinGW: Include .dll extension in .def file LIBRARY commands. Newer toolchains append the extension implicitly if missing, but buildfarm member narwhal (gcc 3.4.2, ld 2.15.91 20040904) does not. This affects most core libraries having an exports.txt file, namely libpq and the ECPG support libraries. On Windows Server 2003, Windows API functions that load and unload DLLs internally will mistakenly unload a libpq whose DLL header reports "LIBPQ" instead of "LIBPQ.dll". When, subsequently, control would return to libpq, the backend crashes. Back-patch to 9.4, like commit 846e91e0223cf9f2821c3ad4dfffffbb929cb027. Before that commit, we used a different linking technique that yielded "libpq.dll" in the DLL header. Commit 53566fc0940cf557416b13252df57350a4511ce4 worked around this by eliminating a call to a function that loads and unloads DLLs internally. That commit is no longer necessary for correctness, but its improving consistency with the MSVC build remains valid. diff --git a/src/Makefile.shlib b/src/Makefile.shlib index 012dd12..e3a06ef 100644 --- a/src/Makefile.shlib +++ b/src/Makefile.shlib @@ -423,13 +423,13 @@ UC_NAME = $(shell echo $(NAME) | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMN lib$(NAME)dll.def: $(SHLIB_EXPORTS) echo '; DEF file for MS VC++' >$@ - echo 'LIBRARY LIB$(UC_NAME)' >>$@ + echo 'LIBRARY LIB$(UC_NAME).dll' >>$@ echo 'EXPORTS' >>$@ sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@ lib$(NAME)ddll.def: $(SHLIB_EXPORTS) echo '; DEF file for MS VC++' >$@ - echo 'LIBRARY LIB$(UC_NAME)D' >>$@ + echo 'LIBRARY LIB$(UC_NAME)D.dll' >>$@ echo 'EXPORTS' >>$@ sed -e '/^#/d' -e 's/^\(.*[ ]\)\([0-9][0-9]*\)/ \1@ \2/' $< >>$@