From df93e6f193fbf8a746d43d785af2260211961f01 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 2 May 2008 14:52:56 +0000 Subject: [PATCH] * libc/include/stdint.h (SIZE_MIN): Remove. (SIZE_MAX): Define. * testsuite/newlib.stdlib/stdlib.exp: New. * testsuite/newlib.stdlib/size_max.c: Likewise. --- newlib/ChangeLog | 7 +++++++ newlib/libc/include/stdint.h | 3 +-- newlib/testsuite/newlib.stdlib/size_max.c | 18 ++++++++++++++++++ newlib/testsuite/newlib.stdlib/stdlib.exp | 10 ++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 newlib/testsuite/newlib.stdlib/size_max.c create mode 100644 newlib/testsuite/newlib.stdlib/stdlib.exp diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 296222d0c..e45b8ddea 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2008-04-26 Mark Mitchell + + * libc/include/stdint.h (SIZE_MIN): Remove. + (SIZE_MAX): Define. + * testsuite/newlib.stdlib/stdlib.exp: New. + * testsuite/newlib.stdlib/size_max.c: Likewise. + 2008-04-29 Eric Blake Fix 2008-04-14 regression in asprintf(ptr,""). diff --git a/newlib/libc/include/stdint.h b/newlib/libc/include/stdint.h index 1fa36517a..821462d8a 100644 --- a/newlib/libc/include/stdint.h +++ b/newlib/libc/include/stdint.h @@ -348,8 +348,7 @@ typedef unsigned long uintptr_t; #endif /* This must match size_t in stddef.h, currently long unsigned int */ -#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L) -#define SIZE_MAX __STDINT_EXP(LONG_MAX) +#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1) /* This must match sig_atomic_t in (currently int) */ #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1) diff --git a/newlib/testsuite/newlib.stdlib/size_max.c b/newlib/testsuite/newlib.stdlib/size_max.c new file mode 100644 index 000000000..d163e27d1 --- /dev/null +++ b/newlib/testsuite/newlib.stdlib/size_max.c @@ -0,0 +1,18 @@ +#include +#include +#include + +int main () { + size_t s; + + s = SIZE_MAX; + /* If SIZE_MAX is truncated when assigning to "s", then SIZE_MAX is + too big. */ + if (s != SIZE_MAX) + abort (); + /* If SIZE_MAX + 1 is not zero, then SIZE_MAX is not big enough. */ + if (++s != 0) + abort (); + + return 0; +} diff --git a/newlib/testsuite/newlib.stdlib/stdlib.exp b/newlib/testsuite/newlib.stdlib/stdlib.exp new file mode 100644 index 000000000..670d21e7e --- /dev/null +++ b/newlib/testsuite/newlib.stdlib/stdlib.exp @@ -0,0 +1,10 @@ +# Copyright (C) 2008 by CodeSourcery, Inc. All rights reserved. +# +# Permission to use, copy, modify, and distribute this software +# is freely granted, provided that this notice is preserved. + +load_lib passfail.exp + +set exclude_list [list "atexit.c"] + +newlib_pass_fail_all -x $exclude_list