eCos uSTL port patch for review

Jonathan Larmour jifl@eCosCentric.com
Tue Aug 4 22:49:00 GMT 2009


John Dallaway wrote:
> Yes. The official uSTL tree would ideally build silently with "-Wundef"
> but if that isn't going to happen then the "#define HAVE_INT64_T 0"
> route seems better than making a lot of changes in the eCos version of
> the uSTL sources.

A further alternative perhaps for now is to add -Wundef to 
CYGPKG_USTL_CFLAGS_REMOVE?

>>>I agree. Option 1 seems best. At some point in the future, C99
>>>vsnprintf() behaviour can become the default.
>>
>>O.k., i will provide a patch.
> 
> 
> Thank you.

Option 1 seems best to me too, although I wouldn't object to switching the 
default to be C99-compliant.

>>A last question. The uSTL eCos package contains a stdint.h file because
>>eCos libc does not provide one. Would you prefer to see this file in the
>>libc library or should it stay in uSTL package.
> 
> 
> stdint.h is a C99 header. Adding it seems harmless to me, but to what
> extent should we continue to add C99 features piecemeal to the existing
> eCos C library which is based on C89? Is there a specific version of
> stdint.h that would be preferable to ensure maximum compatibility?

Ideally we should add stdint.h to CYGPKG_ISOINFRA.

However some cleanup would be required to do that because all the sizes in 
Uwe's version at present are hard-coded to the common sizes for 32-bit 
architectures, which is unhelpful for what would become an important file 
for hardware abstraction. More use could be made of values in <limits.h>. 
Other values should be available to be overriden by the HALs directly from 
their <cyg/hal/basetype.h>. I'm not sure if stddef.h needs to be included.

But I think a better approach might be to look at the stdint.h used in 
newlib, which does some tricks with GCC:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/newlib/libc/include/stdint.h?rev=1&content-type=text/x-cvsweb-markup&cvsroot=src
But some changes are still required, and the "fast" types may still be 
able to be based on the cyg_halcount* types.

If that cleanup is not possible, then the file should remain in this 
package, and there should probably be a #if check on values from limits.h 
to check they match the fundamental type sizes, producing a #error if they 
do not.

I have a few other observations:

- These files have the full GPL:

./include/ustlecos.h
./include/config.h
./include/stdint.h
./src/ustlecos.cpp
./ChangeLog

which needs correcting to the ecos licence.

- The CDL description of CYGPKG_USTL says it needs the fileio package, but 
it isn't required by the package as a whole according to the CDL - it is 
only required in CYGCLS_USTL_FSTREAMS apparently.

- Requiring CYGPKG_LIBC_SIGNALS makes it incompatible with POSIX. For this 
(and other CYGPKG_LIBC_* requirements ideally) you should instead require 
the appropriate CYGINT_ISO_* interfaces from CYGPKG_ISOINFRA.

Hope this helps,

Jifl
-- 
eCosCentric Limited      http://www.eCosCentric.com/     The eCos experts
Barnwell House, Barnwell Drive, Cambridge, UK.       Tel: +44 1223 245571
Registered in England and Wales: Reg No 4422071.
------["The best things in life aren't things."]------      Opinions==mine



More information about the Ecos-patches mailing list