errno issue with cross gcc using newlib

Anurag Sharma anurag@proximity.com.au
Wed Oct 16 21:07:00 GMT 2002


Hi All,

I have come across a strange behaviour using gcc cross compiler (host:
linux, target: cygwin). I am using the cygwin header files and lib files
while making the compiler. (Cygwin uses newlib instaed of libc). 

Consider this short code:

   int fd = ::open("/tmp/errnotest", O_RDONLY | O_BINARY);
    
    if (fd == -1) {
	std::cerr << "open failed, errno=" << errno << ", strerror=" <<
strerror(errno) << std::endl;
	std::cerr << "open failed, errno=" << errno << ", strerror=" <<
strerror(errno) << std::endl;
    }

I have compiled this code using a cross gcc build on host linux using
target cygwin.

If I build the cross compiler by providing --enable-threads=single option
in the configure stage, following is the output :

open failed, errno=2, strerror=No such file or directory
open failed, errno=2, strerror=No such file or directory
 
This is of course expected.

Hoewever if I build the cross compiler by providing --enable-threads=posix
option in the configure stage, the output is as follows :

open failed, errno=2, strerror=No such file or directory
open failed, errno=0, strerror=No error

That is , after the first call to errno, it is reset!!

Has anyone else experiened this before? Can anyone please help find out
what exactly is going wrong?

Regards,

Anurag







More information about the Newlib mailing list