From 7080b364170f3b0c10518f3c4ad3585c6845c16e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 21 Feb 2013 12:27:11 +0000 Subject: [PATCH] * libc/include/sys/_types.h (_ssize_t): Define as signed equivalent of size_t with GCC. --- newlib/ChangeLog | 6 ++++++ newlib/libc/include/sys/_types.h | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 7b63386f89..89c462d401 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,9 @@ +2013-02-20 Yaakov Selkowitz + Joseph S. Myers + + * libc/include/sys/_types.h (_ssize_t): Define as signed equivalent of + size_t with GCC. + 2013-02-19 Steve Ellcey * libc/machine/mips/memcpy.S: Fix USE_PREFETCH check. diff --git a/newlib/libc/include/sys/_types.h b/newlib/libc/include/sys/_types.h index 25252ed836..e8ac429e74 100644 --- a/newlib/libc/include/sys/_types.h +++ b/newlib/libc/include/sys/_types.h @@ -52,12 +52,21 @@ typedef _off64_t _fpos64_t; #endif #ifndef __ssize_t_defined +#ifdef __SIZE_TYPE__ +/* If __SIZE_TYPE__ is defined (gcc) we define ssize_t based on size_t. + We simply change "unsigned" to "signed" for this single definition + to make sure ssize_t and size_t only differ by their signedness. */ +#define unsigned signed +typedef __SIZE_TYPE__ _ssize_t; +#undef unsigned +#else #if defined(__INT_MAX__) && __INT_MAX__ == 2147483647 typedef int _ssize_t; #else typedef long _ssize_t; #endif #endif +#endif #define __need_wint_t #include