guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Again on Windows support


From: Andy Wingo
Subject: Re: Again on Windows support
Date: Thu, 19 Mar 2009 11:54:17 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (gnu/linux)

Hi Carlo,

Thanks for doing this testing. I do not know of anyone who has built
Guile with the VM on Windows, so some of these problems are interesting.

I can't speak to all of your issues, but regarding some of them:

On Wed 18 Mar 2009 12:05, "carlo.bramix" <address@hidden> writes:

> LIBGUILE/GSUBR.C
> ================
> function alloca() is undefined because under Windows the intrinsic
> function is called _alloca().

Hm, I thought the Gnulib alloca thing should have fixed this. Does
adding #include <alloca.h> in gsubr.c not fix this?

> LIBGUILE/OBJCODES.C
> ===================
> sys/mmap.h is absent.

This is unfortunate. But I understand that windows has ways of mapping
files to memory, and we should use those. Do you know what those calls
are?

> 'ulong' is undefined.

Ah, I wonder how this got there. Fixed.


> compilation of function make_objcode_by_mmap() fails because function
> mmap() does not exist.

I would rather implement this properly on windows than make a new, hacky
function. This is a very important function, actually.

> LIBGUILE/VM.C
> =============
> I have not really understood this error:
>
> ../../guile-git/libguile/vm-engine.c: In function `vm_regular_engine':
> ../../guile-git/libguile/vm-engine.c:277: error: unable to find a register to 
> spill in class `SIREG'

This is because in the VM we declare some variables to be in registers,
but this confuses some gccs, especially on win32. I don't know what the
real answer is -- perhaps we shouldn't force register allocation for
these variables.

> It happens with GCC3.4.5, GCC4.1.3 and GCC4.3.0.

That is good to know, thank you for testing with all of these. For the
record I have only seen this problem with GCC 4.1.2 on Linux; e.g. 4.3.0
works for me. So there must be more register pressure on windows or
something.

We can work around it by setting vm-engine.h:72 to be:
#if defined(__i386__) && !defined(__windows__)

But I need to know the right thing to put there for __windows__.

> I hope you will find it useful.

Thank you!

Andy
-- 
http://wingolog.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]