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