This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: __xpg_strerror_r should not clobber strerror buffer


On 05/21/2011 07:35 PM, Christopher Faylor wrote:
> On Sat, May 21, 2011 at 07:26:37PM -0600, Eric Blake wrote:
>> POSIX says that no other function in the standard should clobber the
>> strerror buffer.  Our strerror_r is a GNU extension, so it can get away
>> with clobbering the buffer (but if we wanted to fix it, we would have to
>> separate _my_tls.locals.strerror_buf into two different buffers).
>> perror() is still broken, but that needs to be fixed in newlib.  But
>> __xpg_strerror_r, which is our POSIX strerror_r variant, has to be fixed
>> in cygwin.
>>
>> Meanwhile, glibc just patched strerror this week to print negative
>> errnum as a negative 32-bit int, rather than as a positive unsigned
>> long; cygwin should do likewise.
>>
>> 2011-05-21  Eric Blake  <eblake@redhat.com>
>>
>> 	* errno.cc (strerror): Print unknown errno as int.
>> 	(__xpg_strerror_r): Likewise, and don't clobber strerror buffer.
> 
> Looks good.  Please check in.

Pushed.

Just for the record, I'm having a problem self-building cygwin right
now, from what looks like mingw issues:

/home/eblake/src/winsup/utils/mingw gcc-4 -B./ -shared
-Wl,--image-base,0x6FBC0000 -Wl,--entry,_DllMainCRTStartup@12 mthr.o
mthr_init.o mingwthrd.def -Lmingwex -o mingwm10.dll
mingwex/libmingwex.a(strtodnrp.o): In function `strtod':
/home/eblake/src/build/i686-pc-cygwin/winsup/mingw/mingwex/../../../../../winsup/mingw/include/stdlib.h:315:
multiple definition of `_strtod'
...
/usr/lib/gcc/i686-pc-cygwin/4.3.4/../../../../i686-pc-cygwin/bin/ld:
warning: cannot find entry symbol _DllMainCRTStartup@12; defaulting to
6fbc1000
ertr000001.o:(.rdata+0x0): undefined reference to
`__pei386_runtime_relocator'
collect2: ld returned 1 exit status
make[3]: *** [mingwm10.dll] Error 1
make[3]: Leaving directory
`/home/eblake/src/build/i686-pc-cygwin/winsup/mingw'

How do we go about getting that resolved?

-- 
Eric Blake   eblake@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]