* 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).