[mingw-crt/f20] Backported various Windows XP compatibility patches (RHBZ #1054481)
Erik van Pienbroek
epienbro at fedoraproject.org
Tue Feb 4 23:28:14 UTC 2014
commit 0a8bf65a26b96f8f62b69cec0f3eb2773d537a3f
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date: Wed Feb 5 00:28:39 2014 +0100
Backported various Windows XP compatibility patches (RHBZ #1054481)
...me32-and-_localtime32-to-lib64-msvcrt.def.patch | 34 ++++
0001-Add-secapi-wrapper-for-sprintf_s.patch | 208 ++++++++++++++++++++
...-rand_s-and-vsprintf_s-from-msvcrt.def.in.patch | 50 +++++
mingw-crt.spec | 16 ++-
4 files changed, 307 insertions(+), 1 deletions(-)
---
diff --git a/0001-Add-_gmtime32-and-_localtime32-to-lib64-msvcrt.def.patch b/0001-Add-_gmtime32-and-_localtime32-to-lib64-msvcrt.def.patch
new file mode 100644
index 0000000..502e735
--- /dev/null
+++ b/0001-Add-_gmtime32-and-_localtime32-to-lib64-msvcrt.def.patch
@@ -0,0 +1,34 @@
+>From ec2ee6e10e3bcdf00c2e93eed427cc8c2b626cac Mon Sep 17 00:00:00 2001
+From: Erik van Pienbroek <epienbro at fedoraproject.org>
+Date: Sun, 19 Jan 2014 17:11:40 +0100
+Subject: [PATCH 1/2] Add _gmtime32 and _localtime32 to lib64/msvcrt.def
+
+These symbols are required by the secapi wrappers
+_gmtime32_s and _localtime32_s
+---
+ mingw-w64-crt/lib64/msvcrt.def.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/mingw-w64-crt/lib64/msvcrt.def.in b/mingw-w64-crt/lib64/msvcrt.def.in
+index ed81eff..a0d3647 100644
+--- a/mingw-w64-crt/lib64/msvcrt.def.in
++++ b/mingw-w64-crt/lib64/msvcrt.def.in
+@@ -356,6 +356,7 @@ _getw
+ _getwch
+ _getwche
+ _getws
++_gmtime32
+ ; _gmtime32_s replaced by emu
+ _gmtime64
+ ; _gmtime64_s replaced by emu
+@@ -471,6 +472,7 @@ _lfind
+ _loaddll
+ _lfind_s
+ _local_unwind
++_localtime32
+ ; _localtime32_s replaced by emu
+ _localtime64
+ ; _localtime64_s replaced by emu
+--
+1.8.4.2
+
diff --git a/0001-Add-secapi-wrapper-for-sprintf_s.patch b/0001-Add-secapi-wrapper-for-sprintf_s.patch
new file mode 100644
index 0000000..8438df1
--- /dev/null
+++ b/0001-Add-secapi-wrapper-for-sprintf_s.patch
@@ -0,0 +1,208 @@
+>From dca6ecb46f9b3f2d5652bf27208ac4ecdae1a652 Mon Sep 17 00:00:00 2001
+From: Erik van Pienbroek <epienbro at fedoraproject.org>
+Date: Sun, 26 Jan 2014 20:15:44 +0100
+Subject: [PATCH] Add secapi wrapper for sprintf_s
+
+---
+ mingw-w64-crt/Makefile.am | 1 +
+ mingw-w64-crt/Makefile.in | 45 +++++++++++++++++++++++++++++++++++----
+ mingw-w64-crt/lib32/msvcrt.def.in | 2 +-
+ mingw-w64-crt/lib64/msvcrt.def.in | 2 +-
+ mingw-w64-crt/secapi/sprintf_s.c | 21 ++++++++++++++++++
+ 5 files changed, 65 insertions(+), 6 deletions(-)
+ create mode 100644 mingw-w64-crt/secapi/sprintf_s.c
+
+diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
+index ea384ac..bdca4fa 100644
+--- a/mingw-w64-crt/Makefile.am
++++ b/mingw-w64-crt/Makefile.am
+@@ -180,6 +180,7 @@ src_msvcrt=\
+ secapi/asctime_s.c \
+ secapi/memcpy_s.c \
+ secapi/rand_s.c \
++ secapi/sprintf_s.c \
+ secapi/vsprintf_s.c \
+ secapi/wmemcpy_s.c
+
+diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
+index 6669467..4c0c1cb 100644
+--- a/mingw-w64-crt/Makefile.in
++++ b/mingw-w64-crt/Makefile.in
+@@ -1081,8 +1081,8 @@
+ secapi/_waccess_s.c secapi/_wasctime_s.c secapi/_wctime32_s.c \
+ secapi/_wctime64_s.c secapi/_wstrtime_s.c secapi/_wmktemp_s.c \
+ secapi/_wstrdate_s.c secapi/asctime_s.c secapi/memcpy_s.c \
+- secapi/rand_s.c secapi/vsprintf_s.c secapi/wmemcpy_s.c \
+- misc/lc_locale_func.c lib32/msvcrt.def.in
++ secapi/rand_s.c secapi/sprintf_s.c secapi/vsprintf_s.c \
++ secapi/wmemcpy_s.c misc/lc_locale_func.c lib32/msvcrt.def.in
+ am__objects_19 = \
+ misc/lib32_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \
+ misc/lib32_libmsvcrt_a-output_format.$(OBJEXT) \
+@@ -1118,6 +1118,7 @@
+ secapi/lib32_libmsvcrt_a-asctime_s.$(OBJEXT) \
+ secapi/lib32_libmsvcrt_a-memcpy_s.$(OBJEXT) \
+ secapi/lib32_libmsvcrt_a-rand_s.$(OBJEXT) \
++ secapi/lib32_libmsvcrt_a-sprintf_s.$(OBJEXT) \
+ secapi/lib32_libmsvcrt_a-vsprintf_s.$(OBJEXT) \
+ secapi/lib32_libmsvcrt_a-wmemcpy_s.$(OBJEXT)
+ am__objects_20 = $(am__objects_19) \
+@@ -2181,8 +2182,8 @@
+ secapi/_waccess_s.c secapi/_wasctime_s.c secapi/_wctime32_s.c \
+ secapi/_wctime64_s.c secapi/_wstrtime_s.c secapi/_wmktemp_s.c \
+ secapi/_wstrdate_s.c secapi/asctime_s.c secapi/memcpy_s.c \
+- secapi/rand_s.c secapi/vsprintf_s.c secapi/wmemcpy_s.c \
+- lib64/msvcrt.def.in
++ secapi/rand_s.c secapi/sprintf_s.c secapi/vsprintf_s.c \
++ secapi/wmemcpy_s.c lib64/msvcrt.def.in
+ am__objects_50 = \
+ misc/lib64_libmsvcrt_a-invalid_parameter_handler.$(OBJEXT) \
+ misc/lib64_libmsvcrt_a-output_format.$(OBJEXT) \
+@@ -2218,6 +2219,7 @@
+ secapi/lib64_libmsvcrt_a-asctime_s.$(OBJEXT) \
+ secapi/lib64_libmsvcrt_a-memcpy_s.$(OBJEXT) \
+ secapi/lib64_libmsvcrt_a-rand_s.$(OBJEXT) \
++ secapi/lib64_libmsvcrt_a-sprintf_s.$(OBJEXT) \
+ secapi/lib64_libmsvcrt_a-vsprintf_s.$(OBJEXT) \
+ secapi/lib64_libmsvcrt_a-wmemcpy_s.$(OBJEXT)
+ @LIB64_TRUE@@W32API_FALSE at am_lib64_libmsvcrt_a_OBJECTS = \
+@@ -3820,6 +3822,7 @@
+ secapi/asctime_s.c \
+ secapi/memcpy_s.c \
+ secapi/rand_s.c \
++ secapi/sprintf_s.c \
+ secapi/vsprintf_s.c \
+ secapi/wmemcpy_s.c
+
+@@ -6738,6 +6741,8 @@
+ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib32_libmsvcrt_a-rand_s.$(OBJEXT): secapi/$(am__dirstamp) \
+ secapi/$(DEPDIR)/$(am__dirstamp)
++secapi/lib32_libmsvcrt_a-sprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \
++ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib32_libmsvcrt_a-vsprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \
+ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib32_libmsvcrt_a-wmemcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+@@ -8310,6 +8315,8 @@
+ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib64_libmsvcrt_a-rand_s.$(OBJEXT): secapi/$(am__dirstamp) \
+ secapi/$(DEPDIR)/$(am__dirstamp)
++secapi/lib64_libmsvcrt_a-sprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \
++ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib64_libmsvcrt_a-vsprintf_s.$(OBJEXT): secapi/$(am__dirstamp) \
+ secapi/$(DEPDIR)/$(am__dirstamp)
+ secapi/lib64_libmsvcrt_a-wmemcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+@@ -10662,6 +10669,7 @@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-asctime_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-memcpy_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-rand_s.Po at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-vsprintf_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib32_libmsvcrt_a-wmemcpy_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-_access_s.Po at am__quote@
+@@ -10696,6 +10704,7 @@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-asctime_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-memcpy_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-rand_s.Po at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-vsprintf_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at secapi/$(DEPDIR)/lib64_libmsvcrt_a-wmemcpy_s.Po at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at stdio/$(DEPDIR)/lib32_libmingwex_a-_Exit.Po at am__quote@
+@@ -19842,6 +19851,20 @@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-rand_s.obj `if test -f 'secapi/rand_s.c'; then $(CYGPATH_W) 'secapi/rand_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/rand_s.c'; fi`
+
++secapi/lib32_libmsvcrt_a-sprintf_s.o: secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-sprintf_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Tpo -c -o secapi/lib32_libmsvcrt_a-sprintf_s.o `test -f 'secapi/sprintf_s.c' || echo '$(srcdir)/'`secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Po
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/sprintf_s.c' object='secapi/lib32_libmsvcrt_a-sprintf_s.o' libtool=no @AMDEPBACKSLASH@
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-sprintf_s.o `test -f 'secapi/sprintf_s.c' || echo '$(srcdir)/'`secapi/sprintf_s.c
++
++secapi/lib32_libmsvcrt_a-sprintf_s.obj: secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-sprintf_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Tpo -c -o secapi/lib32_libmsvcrt_a-sprintf_s.obj `if test -f 'secapi/sprintf_s.c'; then $(CYGPATH_W) 'secapi/sprintf_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/sprintf_s.c'; fi`
++ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-sprintf_s.Po
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/sprintf_s.c' object='secapi/lib32_libmsvcrt_a-sprintf_s.obj' libtool=no @AMDEPBACKSLASH@
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmsvcrt_a-sprintf_s.obj `if test -f 'secapi/sprintf_s.c'; then $(CYGPATH_W) 'secapi/sprintf_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/sprintf_s.c'; fi`
++
+ secapi/lib32_libmsvcrt_a-vsprintf_s.o: secapi/vsprintf_s.c
+ @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmsvcrt_a-vsprintf_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmsvcrt_a-vsprintf_s.Tpo -c -o secapi/lib32_libmsvcrt_a-vsprintf_s.o `test -f 'secapi/vsprintf_s.c' || echo '$(srcdir)/'`secapi/vsprintf_s.c
+ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib32_libmsvcrt_a-vsprintf_s.Tpo secapi/$(DEPDIR)/lib32_libmsvcrt_a-vsprintf_s.Po
+@@ -28746,6 +28769,20 @@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-rand_s.obj `if test -f 'secapi/rand_s.c'; then $(CYGPATH_W) 'secapi/rand_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/rand_s.c'; fi`
+
++secapi/lib64_libmsvcrt_a-sprintf_s.o: secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-sprintf_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Tpo -c -o secapi/lib64_libmsvcrt_a-sprintf_s.o `test -f 'secapi/sprintf_s.c' || echo '$(srcdir)/'`secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Po
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/sprintf_s.c' object='secapi/lib64_libmsvcrt_a-sprintf_s.o' libtool=no @AMDEPBACKSLASH@
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-sprintf_s.o `test -f 'secapi/sprintf_s.c' || echo '$(srcdir)/'`secapi/sprintf_s.c
++
++secapi/lib64_libmsvcrt_a-sprintf_s.obj: secapi/sprintf_s.c
++ at am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-sprintf_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Tpo -c -o secapi/lib64_libmsvcrt_a-sprintf_s.obj `if test -f 'secapi/sprintf_s.c'; then $(CYGPATH_W) 'secapi/sprintf_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/sprintf_s.c'; fi`
++ at am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-sprintf_s.Po
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='secapi/sprintf_s.c' object='secapi/lib64_libmsvcrt_a-sprintf_s.obj' libtool=no @AMDEPBACKSLASH@
++ at AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
++ at am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmsvcrt_a-sprintf_s.obj `if test -f 'secapi/sprintf_s.c'; then $(CYGPATH_W) 'secapi/sprintf_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/sprintf_s.c'; fi`
++
+ secapi/lib64_libmsvcrt_a-vsprintf_s.o: secapi/vsprintf_s.c
+ @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmsvcrt_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmsvcrt_a-vsprintf_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmsvcrt_a-vsprintf_s.Tpo -c -o secapi/lib64_libmsvcrt_a-vsprintf_s.o `test -f 'secapi/vsprintf_s.c' || echo '$(srcdir)/'`secapi/vsprintf_s.c
+ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) secapi/$(DEPDIR)/lib64_libmsvcrt_a-vsprintf_s.Tpo secapi/$(DEPDIR)/lib64_libmsvcrt_a-vsprintf_s.Po
+diff --git a/mingw-w64-crt/lib32/msvcrt.def.in b/mingw-w64-crt/lib32/msvcrt.def.in
+index 3455447..f32ecaf 100644
+--- a/mingw-w64-crt/lib32/msvcrt.def.in
++++ b/mingw-w64-crt/lib32/msvcrt.def.in
+@@ -1198,7 +1198,7 @@ memmove_s
+ printf_s
+ qsort_s
+ scanf_s
+-sprintf_s
++; sprintf_s replaced by emu
+ sscanf_s
+ strcat_s
+ strcpy_s
+diff --git a/mingw-w64-crt/lib64/msvcrt.def.in b/mingw-w64-crt/lib64/msvcrt.def.in
+index ceff01e..7a442ce 100644
+--- a/mingw-w64-crt/lib64/msvcrt.def.in
++++ b/mingw-w64-crt/lib64/msvcrt.def.in
+@@ -1177,7 +1177,7 @@ sin
+ sinh
+ ;sinhf
+ sprintf
+-sprintf_s
++; sprintf_s replaced by emu
+ sqrt DATA
+ sqrtf DATA
+ srand
+diff --git a/mingw-w64-crt/secapi/sprintf_s.c b/mingw-w64-crt/secapi/sprintf_s.c
+new file mode 100644
+index 0000000..8c60797
+--- /dev/null
++++ b/mingw-w64-crt/secapi/sprintf_s.c
+@@ -0,0 +1,21 @@
++#include <windows.h>
++#include <malloc.h>
++#include <errno.h>
++#include <msvcrt.h>
++
++int __cdecl sprintf_s (char *, size_t, const char *, ...);
++int __cdecl vsprintf_s (char *, size_t, const char *, va_list);
++
++int __cdecl (*__MINGW_IMP_SYMBOL(sprintf_s))(char *, size_t, const char *,...) = sprintf_s;
++
++int __cdecl
++sprintf_s (char *_DstBuf, size_t _Size, const char *_Format, ...)
++{
++ va_list argp;
++ int r;
++
++ va_start (argp, _Format);
++ r = vsprintf_s (_DstBuf, _Size, _Format, argp);
++ va_end (argp);
++ return r;
++}
+--
+1.8.5.3
+
diff --git a/0002-Remove-rand_s-and-vsprintf_s-from-msvcrt.def.in.patch b/0002-Remove-rand_s-and-vsprintf_s-from-msvcrt.def.in.patch
new file mode 100644
index 0000000..5631936
--- /dev/null
+++ b/0002-Remove-rand_s-and-vsprintf_s-from-msvcrt.def.in.patch
@@ -0,0 +1,50 @@
+>From 2dac1e1583fa2d0f142a048e275845e829883777 Mon Sep 17 00:00:00 2001
+From: Erik van Pienbroek <epienbro at fedoraproject.org>
+Date: Sun, 19 Jan 2014 17:28:12 +0100
+Subject: [PATCH 2/2] Remove rand_s and vsprintf_s from msvcrt.def.in
+
+These symbols are implemented in the secapi wrappers so they
+shouldn't be part of the msvcrt.def.in files any more
+---
+ mingw-w64-crt/lib32/msvcrt.def.in | 2 +-
+ mingw-w64-crt/lib64/msvcrt.def.in | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/mingw-w64-crt/lib32/msvcrt.def.in b/mingw-w64-crt/lib32/msvcrt.def.in
+index 6c2c3cf..3455447 100644
+--- a/mingw-w64-crt/lib32/msvcrt.def.in
++++ b/mingw-w64-crt/lib32/msvcrt.def.in
+@@ -1218,7 +1218,7 @@ vsnprintf == _vsnprintf
+ snprintf == _snprintf
+ snwprintf == _snwprintf
+ vsnwprintf == _vsnwprintf
+-vsprintf_s
++; vsprintf_s replaced by emu
+ vswprintf_s
+ vwprintf_s
+ wcrtomb_s
+diff --git a/mingw-w64-crt/lib64/msvcrt.def.in b/mingw-w64-crt/lib64/msvcrt.def.in
+index a0d3647..ceff01e 100644
+--- a/mingw-w64-crt/lib64/msvcrt.def.in
++++ b/mingw-w64-crt/lib64/msvcrt.def.in
+@@ -1160,7 +1160,7 @@ qsort
+ qsort_s
+ raise
+ rand
+-rand_s
++; rand_s replaced by emu
+ realloc
+ remove
+ rename
+@@ -1239,7 +1239,7 @@ vprintf_s
+ vsnprintf == _vsnprintf
+ snprintf == _snprintf
+ vsprintf
+-vsprintf_s
++; vsprintf_s replaced by emu
+ vswprintf
+ vswprintf_s
+ vwprintf
+--
+1.8.4.2
+
diff --git a/mingw-crt.spec b/mingw-crt.spec
index 2e8bb15..c3b21fd 100644
--- a/mingw-crt.spec
+++ b/mingw-crt.spec
@@ -6,7 +6,7 @@
Name: mingw-crt
Version: 3.1.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: MinGW Windows cross-compiler runtime
License: Public Domain and ZPLv2.1
@@ -35,6 +35,13 @@ BuildRequires: mingw64-binutils
BuildRequires: mingw64-headers
BuildRequires: mingw64-gcc
+# Fix Windows XP compatibility issues mentioned at
+# https://bugzilla.redhat.com/show_bug.cgi?id=1054481
+# Patches are already upstreamed
+Patch0: 0001-Add-_gmtime32-and-_localtime32-to-lib64-msvcrt.def.patch
+Patch1: 0001-Add-secapi-wrapper-for-sprintf_s.patch
+Patch2: 0002-Remove-rand_s-and-vsprintf_s-from-msvcrt.def.in.patch
+
%description
MinGW Windows cross-compiler runtime, base libraries.
@@ -70,6 +77,10 @@ unzip %{S:0}
%setup -q -n mingw-w64-v%{version}
%endif
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+
%build
pushd mingw-w64-crt
@@ -99,6 +110,9 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_includedir}/*.c
%changelog
+* Tue Feb 4 2014 Erik van Pienbroek <epienbro at fedoraproject.org> - 3.1.0-2
+- Backported various Windows XP compatibility patches (RHBZ #1054481)
+
* Thu Jan 9 2014 Erik van Pienbroek <epienbro at fedoraproject.org> - 3.1.0-1
- Update to 3.1.0
More information about the scm-commits
mailing list