unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Unable to compile Guile
@ 2014-11-10  4:30 jeremy chen
  2014-11-10 10:44 ` Eli Zaretskii
  0 siblings, 1 reply; 3+ messages in thread
From: jeremy chen @ 2014-11-10  4:30 UTC (permalink / raw
  To: guile-user

[-- Attachment #1: Type: text/plain, Size: 621 bytes --]

Hi, I am trying to compile guile on windows with Mingw-w64.
The file libguile/numbers.c signal an error in this function:

static SCM
scm_i_inum2big (scm_t_inum x)
{
  /* Return a newly created bignum initialized to X. */
  SCM z = make_bignum ();
  #if SIZEOF_VOID_P == SIZEOF_LONG
    mpz_init_set_si (SCM_I_BIG_MPZ (z), x);
  #else
  /* Note that in this case, you'll also have to check all mpz_*_ui and
     mpz_*_si invocations in Guile. */
  #error creation of mpz not implemented for this inum size
  #endif
  return z;
}

sizeof(void*) is 8 and sizeof(long) is 4 on my machine.
Anyway to get around this? Thanks.

[-- Attachment #2: Type: text/html, Size: 899 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Unable to compile Guile
  2014-11-10  4:30 Unable to compile Guile jeremy chen
@ 2014-11-10 10:44 ` Eli Zaretskii
  2014-11-11 16:31   ` Mark H Weaver
  0 siblings, 1 reply; 3+ messages in thread
From: Eli Zaretskii @ 2014-11-10 10:44 UTC (permalink / raw
  To: jeremy chen; +Cc: guile-user

> Date: Sun, 9 Nov 2014 23:30:07 -0500
> From: jeremy chen <yngccc@gmail.com>
> 
> Hi, I am trying to compile guile on windows with Mingw-w64.
> The file libguile/numbers.c signal an error in this function:
> 
> static SCM
> scm_i_inum2big (scm_t_inum x)
> {
> /* Return a newly created bignum initialized to X. */
> SCM z = make_bignum ();
> #if SIZEOF_VOID_P == SIZEOF_LONG
> mpz_init_set_si (SCM_I_BIG_MPZ (z), x);
> #else
> /* Note that in this case, you'll also have to check all mpz_*_ui and
> mpz_*_si invocations in Guile. */
> #error creation of mpz not implemented for this inum size
> #endif
> return z;
> }
> 
> sizeof(void*) is 8 and sizeof(long) is 4 on my machine.
> Anyway to get around this? Thanks.

This is a bug in Guile: it assumes the LP64 data model, where both
'long' and a pointer are 64-bit wide.  But 64-bit Windows uses the
LLP64 model, where 'long' is a 32-bit data type, and the 64-bit
integer data type is 'long long' or '__int64'.

You need to fix Guile to support the LLP64 model, at least in this
module, and probably elsewhere as well.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Unable to compile Guile
  2014-11-10 10:44 ` Eli Zaretskii
@ 2014-11-11 16:31   ` Mark H Weaver
  0 siblings, 0 replies; 3+ messages in thread
From: Mark H Weaver @ 2014-11-11 16:31 UTC (permalink / raw
  To: Eli Zaretskii; +Cc: guile-user, jeremy chen

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Sun, 9 Nov 2014 23:30:07 -0500
>> From: jeremy chen <yngccc@gmail.com>
>> 
>> Hi, I am trying to compile guile on windows with Mingw-w64.
>> The file libguile/numbers.c signal an error in this function:
>> 
>> static SCM
>> scm_i_inum2big (scm_t_inum x)
>> {
>> /* Return a newly created bignum initialized to X. */
>> SCM z = make_bignum ();
>> #if SIZEOF_VOID_P == SIZEOF_LONG
>> mpz_init_set_si (SCM_I_BIG_MPZ (z), x);
>> #else
>> /* Note that in this case, you'll also have to check all mpz_*_ui and
>> mpz_*_si invocations in Guile. */
>> #error creation of mpz not implemented for this inum size
>> #endif
>> return z;
>> }
>> 
>> sizeof(void*) is 8 and sizeof(long) is 4 on my machine.
>> Anyway to get around this? Thanks.
>
> This is a bug in Guile: it assumes the LP64 data model, where both
> 'long' and a pointer are 64-bit wide.  But 64-bit Windows uses the
> LLP64 model, where 'long' is a 32-bit data type, and the 64-bit
> integer data type is 'long long' or '__int64'.

Indeed.  I've filed a ticket for this issue: http://bugs.gnu.org/19019

It will take some time to find and fix all the places where this
assumption is made, but I will make an effort to do so in the coming
months.

     Thanks,
       Mark



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2014-11-11 16:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-10  4:30 Unable to compile Guile jeremy chen
2014-11-10 10:44 ` Eli Zaretskii
2014-11-11 16:31   ` Mark H Weaver

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).