dlls/msvcrtd/msvcrtd.spec breaks portability

Gerald Pfeifer pfeifer at dbai.tuwien.ac.at
Sun Apr 6 14:54:40 CDT 2003

The following unfortunately breaks FreeBSD 4.8 (and probably other systems
as well):

  revision 1.1
  date: 2003/04/04 19:37:57;  author: julliard;  state: Exp;
  Adam Gundy <arg at cyberscience.com>
  Added an implementation of the MSVCRTD.DLL debugging C runtime DLL.

Here is the actual failure mode:

  /usr/bin/gcc -shared  -Wl,-Bsymbolic,-z,defs msvcrtd.spec.o    debug.o
  msvcrtd.dll.dbg.o -o msvcrtd.dll.so -L../../dlls  -L../../libs/wine -lwine  -L../../libs/port -lwine_port -lm  -lc
  msvcrtd.spec.o: In function `__wine_spec_exports_funcs':
  msvcrtd.spec.o(.data+0x3a8): undefined reference to `ecvt'
  msvcrtd.spec.o(.data+0x3f8): undefined reference to `fcvt'
  msvcrtd.spec.o(.data+0x474): undefined reference to `gcvt'
  msvcrtd.spec.o: In function `__wine_spec_forwards':
  msvcrtd.spec.o(.data+0x52cc): undefined reference to `ecvt'
  msvcrtd.spec.o(.data+0x540c): undefined reference to `fcvt'
  msvcrtd.spec.o(.data+0x55fc): undefined reference to `gcvt'
  msvcrtd.spec.o(.data+0x52c5): undefined reference to `ecvt'
  msvcrtd.spec.o(.data+0x5405): undefined reference to `fcvt'
  msvcrtd.spec.o(.data+0x55f5): undefined reference to `gcvt'
  gmake[2]: *** [msvcrtd.dll.so] Error 1
  gmake[2]: Leaving directory `/.amd_mnt/nashira/files5/test/wine/dlls/msvcrtd'
  gmake[1]: *** [msvcrtd] Error 2

According to /usr/include/stdlib.h on my GNU/Linux boxes and the man
pages, I'm quite sure that these three functions are not ISO C:

  #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED

       These functions are obsolete. Instead,  sprintf()  is  recommended.
       Linux libc4 and libc5 specified the type of ndigits as size_t.  Not
       all locales use a point as the radix character (`decimal point').

       SysVR2, XPG2

Can we simply remove them?

Gerald "Jerry"   pfeifer at dbai.tuwien.ac.at   http://www.pfeifer.com/gerald/

More information about the wine-devel mailing list