RFC re problem with __cmpdi2

Jeremy White jwhite at codeweavers.com
Tue Feb 7 12:13:20 EST 2006

I'm getting near the end of my issues, really, I promise <grin>.

But now I have one where it's not so clear what the solution is,
if any is even reasonable for the public tree.

Specifically, on our production build box, which is an intentionally
old (i.e. woody + a little bit) system, we use gcc 2.95 and glibc 2.2.5.

Now, given that install_size and installed_bytes in install.h are
both declared as 'long long', then when you compile gtk_ui.c and
dialog_ui.c, then gcc uses a function '__cmpdi2' to perform
the (gdouble) cast from long long down.

Sadly, __cmpdi2 is not generally available on 'modern' systems;
many newer glibc's don't have it.  Hence, the setup.gtk or setup
built with that flaw doesn't run on a range of target systems.

There are several ways to fix this.  I can change the declaration
of installed_bytes and install_size to be a long, not a long long.
I've also worked up a patch (which is attached) which does the
math in a slightly different (but, afaict, identical) way, such
that the use of __cmpdi2 is not triggered.

I'm not sure which, if either, of these approaches would be
acceptable to go into the main line Loki tree.  If you want to tell
me to live with the problems my Frankenstein build system created,
I'd understand.  But I'm *so* close to doing this build with
pure CVS that it'd be hard to have to have any delta...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: cmpdi2.diff
Type: text/x-patch
Size: 2354 bytes
Desc: not available
URL: <http://icculus.org/pipermail/lokisetup/attachments/20060207/d62728c7/attachment.bin>

More information about the Lokisetup mailing list