* gnu/packages/patches/gcc-4.9.3-mingw-gthr-default.patch, gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch, gnu/packages/mingw.scm: New files. * gnu/local.mk (dist_patch_DATA): Add the patches. (GNU_SYSTEM_MODULES): Add mingw.scm.
		
			
				
	
	
		
			218 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
	
		
			7.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| This patch includes
 | |
| 
 | |
|    * mingw-w64-headers/include/winnt.h: compile fixes for1 gcc-4.9.3
 | |
|    * mingw-w64-headers/crt/math.h: Likewise
 | |
|    * mingw-w64-headers/crt/float.h (FLT_EPSILON,DBL_EPSILON,LDBL_EPSILON): Add
 | |
|    symbols.
 | |
|    * mingw-w64-headers/crt/stat.h (S_ISLNK,S_ISSOCK,S_ISUID,S_ISGID,S_ISLINK):
 | |
|    Add symbols.
 | |
|    (lstat): Add function.
 | |
|    * mingw-w64-headers/crt/_mingw_stat64.h: Likewise
 | |
|    * mingw-w64-headers/crt/stdlib.h (realpath): Add function.
 | |
| 
 | |
| Needed for building with gcc-4.9.3 and using with cross-libtool-2.4.6.
 | |
| 
 | |
| Upstream status: not yet presented upstream.
 | |
| 
 | |
| index 9c5cf87..74a8541 100644
 | |
| --- a/mingw-w64-crt/misc/dirname.c
 | |
| +++ b/mingw-w64-crt/misc/dirname.c
 | |
| @@ -29,6 +29,12 @@
 | |
|  #define __cdecl  /* this may not be defined.                   */
 | |
|  #endif
 | |
|  
 | |
| +char *__cdecl
 | |
| +realpath(const char *name, char *resolved)
 | |
| +{
 | |
| +  return resolved ? strcpy (resolved, name) : strdup (name);
 | |
| +}
 | |
| +
 | |
|  char * __cdecl
 | |
|  dirname(char *path)
 | |
|  {
 | |
| diff --git a/mingw-w64-headers/crt/_mingw_stat64.h b/mingw-w64-headers/crt/_mingw_stat64.h
 | |
| index 17e754c..7d2339b 100644
 | |
| --- a/mingw-w64-headers/crt/_mingw_stat64.h
 | |
| +++ b/mingw-w64-headers/crt/_mingw_stat64.h
 | |
| @@ -2,13 +2,17 @@
 | |
|  
 | |
|  #ifdef _USE_32BIT_TIME_T
 | |
|  #define _fstat32 _fstat
 | |
| +#define _lstat32 _lstat
 | |
|  #define _stat32 _stat
 | |
|  #define _wstat32 _wstat
 | |
|  #define _fstat32i64 _fstati64
 | |
| +#define _lstat32i64 _lstati64
 | |
|  #define _stat32i64 _stati64
 | |
|  #define _wstat32i64 _wstati64
 | |
|  #else
 | |
|  #define _fstat _fstat64i32
 | |
| +#define _lstat _lstat64i32
 | |
| +#define _lstati64 _lstat64
 | |
|  #define _fstati64 _fstat64
 | |
|  #define _stat _stat64i32
 | |
|  #define _stati64 _stat64
 | |
| diff --git a/mingw-w64-headers/crt/float.h b/mingw-w64-headers/crt/float.h
 | |
| index 5874f4e..bdf4ead 100644
 | |
| --- a/mingw-w64-headers/crt/float.h
 | |
| +++ b/mingw-w64-headers/crt/float.h
 | |
| @@ -22,6 +22,15 @@
 | |
|  #if (__GNUC__ < 4)
 | |
|  #error Corrupt install of gcc-s internal headers, or search order was changed.
 | |
|  #else
 | |
| +
 | |
| +        /* From gcc-4.9.3 float.h.  */
 | |
| +        #undef FLT_EPSILON
 | |
| +        #undef DBL_EPSILON
 | |
| +        #undef LDBL_EPSILON
 | |
| +        #define FLT_EPSILON	__FLT_EPSILON__
 | |
| +        #define DBL_EPSILON	__DBL_EPSILON__
 | |
| +        #define LDBL_EPSILON	__LDBL_EPSILON__
 | |
| +
 | |
|  	/* #include_next <float_ginclude.h> */
 | |
|  	
 | |
|     	/* Number of decimal digits, q, such that any floating-point number with q
 | |
| diff --git a/mingw-w64-headers/crt/math.h b/mingw-w64-headers/crt/math.h
 | |
| index 1e970f4..99a332f 100644
 | |
| --- a/mingw-w64-headers/crt/math.h
 | |
| +++ b/mingw-w64-headers/crt/math.h
 | |
| @@ -216,6 +216,7 @@ extern "C" {
 | |
|  #endif
 | |
|    }
 | |
|  
 | |
| +#if 0
 | |
|    __CRT_INLINE long double __cdecl fabsl (long double x)
 | |
|    {
 | |
|  #ifdef __arm__
 | |
| @@ -226,6 +227,7 @@ extern "C" {
 | |
|      return res;
 | |
|  #endif
 | |
|    }
 | |
| +#endif
 | |
|  
 | |
|    __CRT_INLINE double __cdecl fabs (double x)
 | |
|    {
 | |
| @@ -905,7 +907,7 @@ __mingw_choose_expr (                                         \
 | |
|  /* 7.12.7.3  */
 | |
|    extern double __cdecl hypot (double, double) __MINGW_ATTRIB_DEPRECATED_MSVC2005; /* in libmoldname.a */
 | |
|    extern float __cdecl hypotf (float x, float y);
 | |
| -#ifndef __CRT__NO_INLINE
 | |
| +#if 0 //ndef __CRT__NO_INLINE
 | |
|    __CRT_INLINE float __cdecl hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
 | |
|  #endif
 | |
|    extern long double __cdecl hypotl (long double, long double);
 | |
| diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
 | |
| index dfc5ae4..6f0fee3 100644
 | |
| --- a/mingw-w64-headers/crt/stdlib.h
 | |
| +++ b/mingw-w64-headers/crt/stdlib.h
 | |
| @@ -8,6 +8,7 @@
 | |
|  
 | |
|  #include <crtdefs.h>
 | |
|  #include <limits.h>
 | |
| +#include <string.h>
 | |
|  
 | |
|  #if defined (__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) && !defined (__USE_MINGW_STRTOX)
 | |
|  #define __USE_MINGW_STRTOX 1
 | |
| @@ -676,6 +677,8 @@ unsigned long __cdecl _lrotr(unsigned long,int);
 | |
|  
 | |
|  #endif /* !__NO_ISOCEXT */
 | |
|  
 | |
| +char *__cdecl realpath (const char *name, char *resolved);
 | |
| +
 | |
|  #ifdef __cplusplus
 | |
|  }
 | |
|  #endif
 | |
| diff --git a/mingw-w64-headers/crt/sys/stat.h b/mingw-w64-headers/crt/sys/stat.h
 | |
| index ed60219..d88b4f1 100644
 | |
| --- a/mingw-w64-headers/crt/sys/stat.h
 | |
| +++ b/mingw-w64-headers/crt/sys/stat.h
 | |
| @@ -58,16 +58,21 @@ extern "C" {
 | |
|  #include <_mingw_stat64.h>
 | |
|  
 | |
|  #define _S_IFMT 0xF000
 | |
| +#define _S_IFLNK 0xA000
 | |
| +#define _S_IFSOCK 0xC000
 | |
|  #define _S_IFDIR 0x4000
 | |
|  #define _S_IFCHR 0x2000
 | |
|  #define _S_IFIFO 0x1000
 | |
|  #define _S_IFREG 0x8000
 | |
| +#define _S_ISUID 0x0400
 | |
| +#define _S_ISGID 0x0200
 | |
|  #define _S_IREAD 0x0100
 | |
|  #define _S_IWRITE 0x0080
 | |
|  #define _S_IEXEC 0x0040
 | |
|  
 | |
|    _CRTIMP int __cdecl _fstat32(int _FileDes,struct _stat32 *_Stat);
 | |
|    _CRTIMP int __cdecl _stat32(const char *_Name,struct _stat32 *_Stat);
 | |
| +  static inline int __cdecl _lstat32(const char *_Name,struct _stat32 *_Stat) {return _stat32(_Name, _Stat);}
 | |
|    _CRTIMP int __cdecl _fstat64(int _FileDes,struct _stat64 *_Stat);
 | |
|    _CRTIMP int __cdecl _fstat32i64(int _FileDes,struct _stat32i64 *_Stat);
 | |
|    int __cdecl _fstat64i32(int _FileDes,struct _stat64i32 *_Stat);
 | |
| @@ -97,6 +102,9 @@ extern "C" {
 | |
|    _CRTIMP int __cdecl _stat64(const char *_Name,struct _stat64 *_Stat);
 | |
|    _CRTIMP int __cdecl _stat32i64(const char *_Name,struct _stat32i64 *_Stat);
 | |
|    int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat);
 | |
| +  static inline int __cdecl _lstat64(const char *_Name,struct _stat64 *_Stat) {return _stat64(_Name, _Stat);}
 | |
| +  static inline int __cdecl _lstat32i64(const char *_Name,struct _stat32i64 *_Stat) {return _stat32i64(_Name, _Stat);}
 | |
| +  static inline int __cdecl _lstat64i32(const char *_Name,struct _stat64i32 *_Stat) {return _stat64i32(_Name, _Stat);}
 | |
|  #ifndef __CRT__NO_INLINE
 | |
|    __CRT_INLINE int __cdecl _stat64i32(const char *_Name,struct _stat64i32 *_Stat)
 | |
|    {
 | |
| @@ -132,6 +140,8 @@ extern "C" {
 | |
|  #ifndef	NO_OLDNAMES
 | |
|  #define	_S_IFBLK	0x3000	/* Block: Is this ever set under w32? */
 | |
|  
 | |
| +#define S_IFLNK _S_IFLNK
 | |
| +#define S_IFSOCK _S_IFSOCK
 | |
|  #define S_IFMT _S_IFMT
 | |
|  #define S_IFDIR _S_IFDIR
 | |
|  #define S_IFCHR _S_IFCHR
 | |
| @@ -162,6 +172,11 @@ extern "C" {
 | |
|  #define S_IXOTH    (S_IXGRP >> 3)
 | |
|  #define S_IRWXO    (S_IRWXG >> 3)
 | |
|  
 | |
| +#define S_ISUID _S_ISUID
 | |
| +#define S_ISGID _S_ISGID
 | |
| +
 | |
| +#define S_ISLNK(m)	(((m) & S_IFMT) == S_IFLNK)
 | |
| +#define S_ISSOCK(m)	(((m) & S_IFMT) == S_IFSOCK)
 | |
|  #define	S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
 | |
|  #define	S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
 | |
|  #define	S_ISCHR(m)	(((m) & S_IFMT) == S_IFCHR)
 | |
| @@ -174,6 +189,7 @@ extern "C" {
 | |
|  int __cdecl stat(const char *_Filename,struct stat *_Stat);
 | |
|  int __cdecl fstat(int _Desc,struct stat *_Stat);
 | |
|  int __cdecl wstat(const wchar_t *_Filename,struct stat *_Stat);
 | |
| +static inline int __cdecl lstat(const char *_Filename,struct stat *_Stat){return stat(_Filename, _Stat);}
 | |
|  
 | |
|  #ifndef __CRT__NO_INLINE
 | |
|  #ifdef _USE_32BIT_TIME_T
 | |
| @@ -262,9 +278,11 @@ __CRT_INLINE int __cdecl
 | |
|  
 | |
|  #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
 | |
|  #ifdef _USE_32BIT_TIME_T
 | |
| +#define lstat _lstat32i64
 | |
|  #define stat _stat32i64
 | |
|  #define fstat _fstat32i64
 | |
|  #else
 | |
| +#define lstat _lstat64
 | |
|  #define stat _stat64
 | |
|  #define fstat _fstat64
 | |
|  #endif
 | |
| diff --git a/mingw-w64-headers/include/winnt.h b/mingw-w64-headers/include/winnt.h
 | |
| index 52af29b..8626396 100644
 | |
| --- a/mingw-w64-headers/include/winnt.h
 | |
| +++ b/mingw-w64-headers/include/winnt.h
 | |
| @@ -6895,7 +6895,12 @@ __buildmemorybarrier()
 | |
|  	  DWORD Reg : 3;
 | |
|  	  DWORD R : 1;
 | |
|  	  DWORD L : 1;
 | |
| +/* C is used as a const specifier */
 | |
| +#define save_C C
 | |
| +#undef C
 | |
|  	  DWORD C : 1;
 | |
| +#define C save_C
 | |
| +#undef save_C
 | |
|  	  DWORD StackAdjust : 10;
 | |
|  	} DUMMYSTRUCTNAME;
 | |
|        } DUMMYUNIONNAME;
 |