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