rtems 4.9 build failure due to new unistd.h

Ralf Corsepius ralf.corsepius at rtems.org
Mon Dec 8 08:18:24 UTC 2008

On Mon, 2008-12-08 at 02:45 -0500, Gene Smith wrote:
> I recently tried to do a "make clean all" of rtems and it fails when 
> compiling ttyname.c: ttyname_r() with a complaint that it differs from 
> the declaration in unistd.h.  ttyname_r() has parameter namesize 
> declared as int while in unistd.h it is size_t and declared only for 
> cygwin and rtems.
Correct. This will soon change. RTEMS's unistd.h not having declared
ttyname_r() is a bug.

> I think unistd.h (under /opt/rtems-4.9/arm-rtems4.9/include/sys) was 
> recently yum updated
Also correct. The arm-rtems4.9-gcc/newlib have been updated, because I
had discovered a serious bug with it.

Unfortunately, I missed the fact that the new ttyname_r change, doesn't
meet rtems-4.9.0's demands. Sorry for that.

FWIW: All rtems-4.9.1 toolchains will be updated with this change,
accompanied with an upgrade to binutils-2.19, in parallel to the
rtems-4.9.1 toolchain.

Unless something very nasty should happen, this can be expected to
happen any time soon, almost for sure during this week.

>  since on another machine which has not been 
> recently updated it only declares ttyname_r() in unistd.h for cygwin and 
> not for rtems, so there is no conflict.
> Anyhow, I ended up changing namesize from int to a size_t in 
> rtems-4.9.0/cpukit/libcsupport/src/ttyname.c.
This is the right (tm) fix. It already is part of CVS on
rtems-4-9-branch and will be part of the upcoming rtems-4.9.1

> -gene
> P/S:
> It seems that namesize is not actually used in posix function 
> ttyname_r().
This doesn't matter, ttyname_r/ttyname are specified by POSIX, so we
don't have any choice.

>  Also, is "Demetermine" a real word?
:) Nah .... I already fixed this many times on different versions of
RTEMS, but would not exclude to have missed some "incarnations."


More information about the users mailing list