summary refs log tree commit diff
path: root/gnu/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch
blob: e8f841c4fd34262a6f1e2ec4e1452f374c34a0bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
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;