[ECOS] Patch for Re: [ECOS] redefinition of `cyg_uint32'

Juergen Lambrecht J.Lambrecht@televic.com
Tue May 23 08:23:00 GMT 2006


Hello Andrew,

with FreeBDS, I have the same problem.
By realizing that only the signed types give a problem, and not the 
unsigned ones, I found the solution: adding #undef's for the signed types.

The new file ecos/packages/net/bsd_tcpip/current/include/sys/bsdtypes.h 
is in attach, together with the diff file (from ExamDiff Pro) 
diff_bsdtypes.h.txt

Kind regards,
Juergen Lambrecht

Andrew Lunn wrote:
> On Thu, May 18, 2006 at 04:43:21PM +0200, J?rgen Lambrecht wrote:
>   
>> I'm sorry, I confused #define with typedef.
>> This is the correct problem description:
>>
>> The problem started by using the openbsd package.
>>     
>
> Ah, O.K. I've not compiled OpenBSD for a long time. Most people have
> swapped to the FreeBSD stack.
>   
I just need a ftp server, LWIP does not have it. I will also swap to
FreeBSD.
>   
>> In ecos/packages/net/bsd_tcpip/current/include/sys/bsdtypes.h:
>>
>>   typedef	unsigned int		u_int32_t;
>>   typedef	unsigned int		 uint32_t;
>>
>> But in ecos/packages/compat/linux/current/include/linux/types.h:
>>
>> #define uint32_t cyg_uint32
>>
>> So apparantly, the compiler replaces in bsdtypes.h the 'uint32_t' with 
>> cyg_uint32, which becomes then redefined.
>> Apparantly, because it is not possible because the same file bdstypes.h 
>> contains also:
>> #undef uint32_t
>>
>> The compiler complains when compiling jffs2:
>>   arm-elf-gcc -c  ... ecos/packages/fs/jffs2/current/src/compr.c
>> And compr.h contains
>>   #include <linux/types.h>
>>
>> What happens when a typedefed "uint32_t" exists, follewed by #define'ing 
>> it??
>> Could that be the cause of problems?
>>     
>
> Yes, this seems reasonable.
>
> So the question is, why is sys/bsdtypes.h being included in compr.h?
>
>    Andrew
>   
I followed the compiler trace, and this is the answer:

  #if !defined(_POSIX_SOURCE)
  # if CYGINT_ISO_BSDTYPES
  #  ifdef CYGBLD_ISO_BSDTYPES_HEADER
  #   include CYGBLD_ISO_BSDTYPES_HEADER
  #  endif
  # endif
  #endif // !defined(_POSIX_SOURCE)

 From isoinfra/current/include/sys/types.h:112

This is the trace:

In file included from
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/sys/bsdtypes.h:80,
->net/bsd_tcpip/current/include/sys/bsdtypes.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/sys/types.h:112,
->isoinfra/current/include/sys/types.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/sys/stat.h:69,
->isoinfra/current/include/sys/stat.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/linux/stat.h:5,
->compat/linux/current/include/linux/stat.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/linux/fs.h:4,
->compat/linux/current/include/linux/fs.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/ecos/packages/fs/jffs2/current/src/compr.h:24,
->fs/jffs2/current/src/compr.h
                 from
/ecos-c/version/vcs/c/ims/std_ims/ecos/packages/fs/jffs2/current/src/compr.c:16:
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/machine/types.h:41: 

redefinition of `cyg_int8'
/ecos-c/version/vcs/c/ims/std_ims/build/ecos_ims/install/include/cyg/infra/cyg_type.h:203: 

`cyg_int8' previously declared here

Kind regards,
Juergen Lambrecht

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: bsdtypes.h
URL: <http://sourceware.org/pipermail/ecos-discuss/attachments/20060523/fe01f0e1/attachment.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: diff_bsdtypes.h.txt
URL: <http://sourceware.org/pipermail/ecos-discuss/attachments/20060523/fe01f0e1/attachment.txt>
-------------- next part --------------
-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


More information about the Ecos-discuss mailing list