Trying to link application with msvcr80.dll instead of msvcrt.dll (e.g. by
replacing -lmsvcrt by -lmsvcr80 in gcc spec file) results in following
linker error:

.../lib/crt2.o: in function `_tmainCRTStartup':
.../mingw-w64-crt/crt/crtexe.c:290: undefined reference to 
`_set_invalid_parameter_handler'
.../lib/libmingwex.a(lib32_libmingwex_a-mingw_vfprintf.o): in function 
`_mingw_vfprintf':
.../mingw-w64-crt/stdio/mingw_vfprintf.c:53: undefined reference to `_lock_file'
.../mingw-w64-crt/stdio/mingw_vfprintf.c:55: undefined reference to 
`_unlock_file'

It is because msvcr80.dll does not implement following functions which are
required for mingw printf implementations: _set_invalid_parameter_handler,
_lock_file, _unlock_file.

This patch fixes this problem by compiling missing functions into
libmsvcr80.a library which is linked when specifying -lmsvcr80 flag.
---
 mingw-w64-crt/Makefile.am | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 86b0b0d7..3f477c5d 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -368,13 +368,20 @@ src_msvcrtarm64=\
   misc/_getpid.c \
   stdio/gets.c
 
+src_msvcr80_32=\
+  $(src_msvcrt_common) \
+  misc/invalid_parameter_handler.c \
+  stdio/mingw_lock.c
+
 src_msvcr80_64=\
   $(src_msvcrt_common) \
   misc/__p___argv.c \
   misc/__p__acmdln.c \
   misc/__p__commode.c \
   misc/__p__fmode.c \
-  misc/__p__wcmdln.c
+  misc/__p__wcmdln.c \
+  misc/invalid_parameter_handler.c \
+  stdio/mingw_lock.c
 
 src_msvcr120_app=\
   $(src_msvcrt_common) \
@@ -811,7 +818,7 @@ lib32_libcrtdll_a_AR = $(DTDEF32) 
$(top_srcdir)/lib32/crtdll.def && $(AR) $(ARFL
 lib32_libcrtdll_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
 
 lib32_LIBRARIES += lib32/libmsvcr80.a
-lib32_libmsvcr80_a_SOURCES = $(src_msvcrt_common) lib32/msvcr80.def.in
+lib32_libmsvcr80_a_SOURCES = $(src_msvcr80_32) lib32/msvcr80.def.in
 lib32_libmsvcr80_a_AR = $(DTDEF32) lib32/msvcr80.def && $(AR) $(ARFLAGS)
 lib32_libmsvcr80_a_CPPFLAGS=$(CPPFLAGS32) -D__LIBMSVCRT__ $(extra_include) 
$(sysincludes)
 EXTRA_lib32_libmsvcr80_a_DEPENDENCIES=lib32/msvcr80.def
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to