Thanks for your bug report. I added an #include <stdint.h> to get WORDSIZE
defined on etch libc.  I also applied your fallback to upstream
wordsize/endian selection. A new version should be uploaded shortly.

Is your backport of zeroc-ice33 and related packages available to anyone?

Regards,
Paco

On Thu, Oct 15, 2009 at 2:37 PM, Siim Põder <s...@p6drad-teel.net> wrote:

> Package: zeroc-ice
> Version: 3.3.1-6
>
> Although bug #539930 has been closed, I recently tried building
> zeroc-ice on 64bit etch system. This time it fails more consistently -
> the build works fine but resulting IceUtil libraries use "long long" for
> 64bit integres. I checked the Config.h and sure enough, it was defining
> ICE_32 where the endian&limits patch adds the __WORDSIZE detection.
>
> This seems to be the problem:
> $ nm -CD /usr/lib/libIceUtil.so | grep seconds
> 000000000002c770 T IceUtil::Time::seconds(long long)
>
> Resulting in at least this:
> $ python
> Python 2.4.4 (#2, Oct 22 2008, 20:20:22)
> [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import Ice
> Traceback (most recent call last):
>  File "<stdin>", line 1, in ?
>  File "/var/lib/python-support/python2.4/Ice.py", line 19, in ?
>    import IcePy
> ImportError: /var/lib/python-support/python2.4/IcePy.so: undefined
> symbol: _ZN7IceUtil4Time12microSecondsEl
> >>>
>
> But probably other stuff is likely to be broken as well.
>
> For now I'm building with your endian&limits patch changed to check if
> __WORDSIZE is even defined and fall back to upstream wordsize detection:
>  //
>  // 32 or 64 bit mode?
>  //
> +#if defined(HAVE_LIMITS_H)
> +#   ifndef __USE_XOPEN
> +#      define __USE_XOPEN
> +#   endif
> +#   include <limits.h>
> +#   if defined(__WORDSIZE)
> +#      if __WORDSIZE == 32
> +#         define ICE_32
> +#      else
> +#         define ICE_64
> +#      endif
> +#   endif
> +#endif
> +
> +#if !defined(ICE_32) && !defined(ICE_64)
>  #if defined(__linux) && defined(__sparc__)
>  //
>  // We are a linux sparc, which forces 32 bit usr land, no matter
> ...
>  #else
>  #   define ICE_32
>  #endif
> +#endif
>
> I understand that failing __WORDSIZE detection, the upstream one will
> not work on all platforms supported by Debian. However, at least on
> 64bit etch, it works:
>
> $ nm -CD libIceUtil.so.33 | grep seconds
> 000000000002c720 T IceUtil::Time::seconds(long)
>
> I don't think this bug is particularily important and will not take it
> as a personal offence should you decide to wontfix it ;)
>
> Siim
>
>
>


-- 
Computer Architecture and Networks Group
University of Castilla-La Mancha
http://arco.esi.uclm.es/~francisco.moya/<http://arco.esi.uclm.es/%7Efrancisco.moya/>
Tel:(+34) 926 295 483, Fax:(+34) 926 295 354

Reply via email to