[Fwd: size_t is defined as an `int'.]

Joel Sherrill joel.sherrill@OARcorp.com
Thu Oct 19 05:55:00 GMT 2000

"J. Johnston" wrote:
> Joel Sherrill wrote:
> >
> > This came across the RTEMS list.  I would like some opinions
> > since it appears that the glibc on RedHat 6.2 also uses
> > "int".  Solaris 2.x appears to use unsigned int.
> >
> > Comments.
> >
> size_t must be unsigned as defined in the ANSI, POSIX, and Single UNIX standards.  A signed version
> ssize_t is defined in POSIX and Single UNIX.
> The underlying definition of size_t is in stddef.h which is part of the compiler.
> A small test case on my Linux 6.2 using gcc version 2.95.2 gives the following in
> the -E output:
> typedef unsigned int size_t;

When I tried this I get the same results on the native compiler and 
one of the cross rtems (powerpc).  I guess this report and (I know) my
analysis were based on grep'ing the include files.  There is an
incorrect definition of size_t in newlib/libc/sys/rtems/sys/types.h.
Based on this discussion, should that file simply include stddef.h and
eliminate some code?
> Everywhere I looked in glibc, it punts the underlying definition of size_t to stddef.h
> after defining __need_size_t.
> Do you have an example of glibc defining size_t to signed?  By any chance is your compile
> setting one of the special defines used in stddef.h to override size_t (e.g. __SIZE_TYPE__)?
> -- Jeff Johnston (Red Hat Inc)

Joel Sherrill, Ph.D.             Director of Research & Development
joel@OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985

More information about the Newlib mailing list