[ECOS] Re: uSTL hello world

cetoni GmbH - Uwe Kindler uwe.kindler@cetoni.de
Tue Sep 8 15:14:00 GMT 2009


Hi John,

> Back to the original problem. It may be easiest to drill down into the
> cout call hierarchy under debug and compare with the equivalent call
> stack from a working application in order to narrow the problem search
> space.
> 
> John Dallaway

O.k. - I did this and here are my results.

In both situations (reference to printf exists and no reference to 
printf exists in main.cpp) the call cout << "Hello world!\n" brings us 
into the function readwritev() in fileio/io.cxx. In this file the lines 
105 - 108 makes the difference:

     fp = cyg_fp_get( fd );

     if( fp == NULL )
         FILEIO_RETURN(EBADF);

If a printf call is present in main.cpp then cyg_fp_get() returns a 
valid file pointer. If no printf call is present in main.cpp the 
cyg_fp_get() returns 0 and the function returns with EBADF.

Here are the local variables in readwritev() with printf:

fd	0x1	
_iov	0xa0140948	
iov_len	0x1	
direction	0x2	
cnt	0xd	
len	0xd	
ret	0x11110008	
_idx	0x1	
fp	0xa0140d90	
iov	0xa014086c	
uio	{...}	
op	0xa014095c

and here are the locals in readwritev() without printf in main:

fd	0x1	
_iov	0xa013d5e8	
iov_len	0x1	
direction	0x2	
cnt	0x11110006	
len	0xd	
ret	0x11110008	
_idx	0x1	
fp	0x00000000	
iov	0xa013d50c	
uio	{...}	
op	0xa013d5fc

Any idea what is going wrong here before I dig even more deeper?

Regards, Uwe





-- 
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