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 */ /* 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 #include +#include #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;