[Top][All Lists]
[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/