Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/newlib
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-04-23 13:42:25 +0400
committerCorinna Vinschen <corinna@vinschen.de>2013-04-23 13:42:25 +0400
commit1875ee55d31d3673059373c8f9837bf98f93c713 (patch)
tree5b6e27ca6f7db52e5d041972710d7215e0bba2ff /newlib
parentbca6ce4282faeccaa0e380858b0a067dbe01f137 (diff)
Port newlib to x86_64-pc-cygwin.
* libc/include/sys/features.h: Redefine compilation environment definitions for Cygwin to cover 64 bit Cygwin. * libc/ctype/ctype_.c (_ctype_): Fix definition for 64 bit Cygwin. * libc/include/machine/setjmp.h: Change definition of _JBLEN to allow different values for 32 bit and 64 bit Cygwin. * libc/include/reent.h (stat64): Define as stat under Cygwin, instead of as __stat64. Undef stat64 if not building Newlib. * libc/include/sys/stat.h (stat64): Define as stat under Cygwin.
Diffstat (limited to 'newlib')
-rw-r--r--newlib/ChangeLog12
-rw-r--r--newlib/libc/ctype/ctype_.c11
-rw-r--r--newlib/libc/include/machine/setjmp.h25
-rw-r--r--newlib/libc/include/reent.h12
-rw-r--r--newlib/libc/include/sys/features.h12
-rw-r--r--newlib/libc/include/sys/stat.h2
6 files changed, 55 insertions, 19 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index c6add4514..ce4dda4fe 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,15 @@
+2013-04-23 Corinna Vinschen <vinschen@redhat.com>
+
+ Port newlib to x86_64-pc-cygwin.
+ * libc/include/sys/features.h: Redefine compilation environment
+ definitions for Cygwin to cover 64 bit Cygwin.
+ * libc/ctype/ctype_.c (_ctype_): Fix definition for 64 bit Cygwin.
+ * libc/include/machine/setjmp.h: Change definition of _JBLEN to allow
+ different values for 32 bit and 64 bit Cygwin.
+ * libc/include/reent.h (stat64): Define as stat under Cygwin, instead
+ of as __stat64. Undef stat64 if not building Newlib.
+ * libc/include/sys/stat.h (stat64): Define as stat under Cygwin.
+
2013-04-22 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/include/sys/cdefs.h: Align with latest FreeBSD file header.
diff --git a/newlib/libc/ctype/ctype_.c b/newlib/libc/ctype/ctype_.c
index c3615d2a1..164a8eed7 100644
--- a/newlib/libc/ctype/ctype_.c
+++ b/newlib/libc/ctype/ctype_.c
@@ -111,14 +111,21 @@ _CONST
char __EXPORT *__ctype_ptr__ = (char *) _ctype_b + 127;
# ifdef __CYGWIN__
-
+# ifdef __x86_64__
+__asm__ (" \n\
+ .data \n\
+ .globl _ctype_ \n\
+ .set _ctype_,_ctype_b+127 \n\
+ .text \n\
+");
+# else
__asm__ (" \n\
.data \n\
.globl __ctype_ \n\
.set __ctype_,__ctype_b+127 \n\
.text \n\
");
-
+# endif
# else /* !__CYGWIN__ */
_CONST char _ctype_[1 + 256] = {
diff --git a/newlib/libc/include/machine/setjmp.h b/newlib/libc/include/machine/setjmp.h
index 31a8032d8..97749c0cb 100644
--- a/newlib/libc/include/machine/setjmp.h
+++ b/newlib/libc/include/machine/setjmp.h
@@ -68,19 +68,24 @@ _BEGIN_STD_C
#define _JBLEN 9
#endif
-#if defined(__CYGWIN__) && !defined (_JBLEN)
-#define _JBLEN (13 * 4)
-#elif defined (__i386__)
-#if defined(__unix__) || defined(__rtems__)
-# define _JBLEN 9
-#else
-#include "setjmp-dj.h"
-#endif
+#ifdef __i386__
+# if defined(__CYGWIN__) && !defined (_JBLEN)
+# define _JBLEN (13 * 4)
+# elif defined(__unix__) || defined(__rtems__)
+# define _JBLEN 9
+# else
+# include "setjmp-dj.h"
+# endif
#endif
#ifdef __x86_64__
-#define _JBTYPE long long
-#define _JBLEN 8
+# ifdef __CYGWIN__
+# define _JBTYPE long
+# define _JBLEN 32
+# else
+# define _JBTYPE long long
+# define _JBLEN 8
+# endif
#endif
#ifdef __i960__
diff --git a/newlib/libc/include/reent.h b/newlib/libc/include/reent.h
index 4617c0d96..861be71d3 100644
--- a/newlib/libc/include/reent.h
+++ b/newlib/libc/include/reent.h
@@ -163,16 +163,22 @@ extern int _gettimeofday_r _PARAMS ((struct _reent *, struct timeval *__tp, void
#ifdef __LARGE64_FILES
-#if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB)
-#define stat64 __stat64
-#endif
+#if defined(__CYGWIN__)
+#define stat64 stat
+#endif
struct stat64;
extern _off64_t _lseek64_r _PARAMS ((struct _reent *, int, _off64_t, int));
extern int _fstat64_r _PARAMS ((struct _reent *, int, struct stat64 *));
extern int _open64_r _PARAMS ((struct _reent *, const char *, int, int));
extern int _stat64_r _PARAMS ((struct _reent *, const char *, struct stat64 *));
+
+/* Don't pollute namespace if not building newlib. */
+#if defined (__CYGWIN__) && !defined (_COMPILING_NEWLIB)
+#undef stat64
+#endif
+
#endif
#endif
diff --git a/newlib/libc/include/sys/features.h b/newlib/libc/include/sys/features.h
index b5e003b5f..a3ba513bf 100644
--- a/newlib/libc/include/sys/features.h
+++ b/newlib/libc/include/sys/features.h
@@ -173,12 +173,18 @@ extern "C" {
#define _POSIX2_SW_DEV 200112L
#define _POSIX2_UPE 200112L
#define _POSIX_V6_ILP32_OFF32 -1
-#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
+#ifdef __LP64__
+#define _POSIX_V6_ILP32_OFFBIG -1
+#define _POSIX_V6_LP64_OFF64 1
+#define _POSIX_V6_LPBIG_OFFBIG 1
+#else
#define _POSIX_V6_ILP32_OFFBIG 1
-#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
#define _POSIX_V6_LP64_OFF64 -1
-#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
#define _POSIX_V6_LPBIG_OFFBIG -1
+#endif
+#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
+#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
+#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
#define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
#define _XOPEN_CRYPT 1
#define _XOPEN_ENH_I18N 1
diff --git a/newlib/libc/include/sys/stat.h b/newlib/libc/include/sys/stat.h
index fa2036dd3..937bcacd2 100644
--- a/newlib/libc/include/sys/stat.h
+++ b/newlib/libc/include/sys/stat.h
@@ -19,7 +19,7 @@ extern "C" {
#ifdef __CYGWIN__
#include <cygwin/stat.h>
#ifdef _COMPILING_NEWLIB
-#define stat64 __stat64
+#define stat64 stat
#endif
#else
struct stat