From: Pip Cet <pipcet@protonmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org
Subject: Re: MPS: Win64 testers?
Date: Thu, 25 Jul 2024 15:39:51 +0000 [thread overview]
Message-ID: <X1K9ijqyijsuEyESAzg_lsTfLQ8Qf1zg05Fooct7r9DC0mik90PpS8TYh1StWbT6iPQdSCHdcdSsPfAwTmNBGuQaSssVVxjQcyQVNKHqw5E=@protonmail.com> (raw)
In-Reply-To: <86le1q54bw.fsf@gnu.org>
On Thursday, July 25th, 2024 at 07:16, Eli Zaretskii <eliz@gnu.org> wrote:
> > Date: Wed, 24 Jul 2024 15:45:18 +0000
>
> > From: Pip Cet pipcet@protonmail.com
> >
> > Is anyone building the scratch/igc branch for/on win64 systems? I'm trying to do that on wine/msys2/mingw64 (not an actual Windows installation), and there are a number of issues that need to be fixed, and I'm wondering whether I'm the first person to run into them. Quite possibly, they're specific to wine.
>
> I think you are indeed the first one. I use 32-bit MinGW, and for
> that I have a working build of MPS (and can share the diffs if someone
> wants them), but a 64-bit MinGW build of MPS will need other changes,
> at least in some cases.
It'd be great if you could share the diffs, so I could see where I've gone wrong! I've got the 64-bit build with mps to start by now, but haven't really tested it for stability much. It survives a few garbage collection cycles, at least.
As a general question, would there be interest in CI for such systems? I'm setting up something locally, but I've been trying to be careful so that the Dockerfiles I'm using should work on x86_64 GNU/Linux machines generally.
> > - _setjmp_ex assumes 16-byte alignment of jmp_buf to store the XMM registers, but we allocate handlers with 8-byte alignment in MPS builds.
>
> Where and how do you see that?
I'm not quite sure what you're asking. I saw this trying to run things in wine in a docker image on an x86_64 GNU/Linux machine, ran it in gdb.exe, found the instruction causing the segfault, and fixed things so it wouldn't.
https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/winecrt0/setjmp.c#L123 is the instruction that segfaulted here. I'm not sure whether that's what you were asking.
The jump buffer is declared with 16-byte alignment here: https://gitlab.winehq.org/wine/wine/-/blob/master/include/msvcrt/setjmp.h#L50
A side effect of this is that LISP_ALIGNMENT is 16, which breaks MPS because vectorlike_nbytes rounds up to a multiple of LISP_ALIGNMENT, not just GCALIGNMENT.
Looking over my diff, here's what I had to fix to get things to the current stage on msys and msys2 (using MSYSTEM=MINGW64).
- disable the sanity check in the Makefile, because backticks/pipes don't work properly
- make WINDRES include the --use-temp-file flag, for the same reason
- wrap the add-name-to-file calls in loadup.el in with-demoted-errors (link problems?)
- force LISP_ALIGNMENT to be 8, not 16
- change my local generation size settings to be much more conservative for the msys build. I think scratch/igc is fine, though.
- make sys_setjmp and sys_longjmp use a larger buffer and memmove() the data in it so it's 16-byte aligned
- disable the failure exit on close_stream failure in sysdep.c, and silently ignore such errors
- trace the extra 'ztrillion' bignum in timefns.c
- for the msys build, run autogen.sh outside of wine, since there are virtual memory issues inflooping the process otherwise
I must confess I know little about the UCRT64 default MSYSTEM value. Maybe it doesn't have the same problems.
If anyone wants to study or reuse any of my efforts, let me know and I'll provide a link to a public repository that can be used. Note that my Wine build environment, as far as I know, uses only free software, so it's in the "technically free OS" category. (The Android build uses the SDK, which claims to be decidedly non-free but makes an exception for those components which are indeed free; that means it's possible to build Android APKs without paying for it, using non-free software, and run them on technically free Android versions if you can find those. AFAIK, the macOS build requires non-free and expensive software both to compile and to run the executable?)
Pip
next prev parent reply other threads:[~2024-07-25 15:39 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-24 15:45 MPS: Win64 testers? Pip Cet
2024-07-25 7:16 ` Eli Zaretskii
2024-07-25 15:39 ` Pip Cet [this message]
2024-07-27 8:02 ` Eli Zaretskii
2024-07-27 10:42 ` Pip Cet
2024-07-27 12:14 ` Eli Zaretskii
2024-07-27 15:49 ` Pip Cet
2024-07-27 16:10 ` Eli Zaretskii
2024-07-27 16:56 ` Eli Zaretskii
2024-07-27 18:27 ` Pip Cet
2024-07-27 18:50 ` Eli Zaretskii
2024-07-27 20:22 ` Pip Cet
2024-07-28 5:25 ` Eli Zaretskii
2024-07-28 13:00 ` Pip Cet
2024-07-28 14:20 ` Eli Zaretskii
2024-07-28 15:00 ` Pip Cet
2024-07-28 15:20 ` Eli Zaretskii
2024-07-28 20:22 ` Pip Cet
2024-07-29 11:25 ` Eli Zaretskii
2024-07-31 6:18 ` Pip Cet
2024-07-31 14:02 ` Eli Zaretskii
2024-07-31 19:04 ` Sebastián Monía
2024-08-01 5:00 ` Eli Zaretskii
2024-08-03 7:50 ` pipcet
2024-08-03 9:23 ` Eli Zaretskii
2024-08-03 15:17 ` pipcet
2024-08-03 16:07 ` Eli Zaretskii
2024-07-30 2:51 ` MPS: Lose64 testers? Richard Stallman
2024-07-27 16:09 ` MPS: Win64 testers? Michael Albinus
2024-07-28 13:22 ` Pip Cet
2024-07-28 17:32 ` Emba (was: MPS: Win64 testers?) Michael Albinus
-- strict thread matches above, loose matches on Subject: below --
2024-07-25 9:45 MPS: Win64 testers? Angelo Graziosi
2024-07-25 10:02 ` Stefan Kangas
2024-07-25 11:35 ` Eli Zaretskii
2024-07-27 14:22 ` Angelo Graziosi
2024-08-06 3:04 Quang Kien Nguyen
2024-08-06 7:03 ` Quang Kien Nguyen
2024-08-06 11:40 ` Eli Zaretskii
2024-08-06 17:39 ` Quang Kien Nguyen
2024-08-06 18:32 ` Eli Zaretskii
2024-08-06 20:52 ` Quang Kien Nguyen
2024-08-07 11:41 ` Eli Zaretskii
2024-08-07 18:32 ` Quang Kien Nguyen
2024-08-08 5:46 ` Eli Zaretskii
2024-08-08 23:44 ` Quang Kien Nguyen
2024-08-09 6:00 ` Eli Zaretskii
2024-08-09 6:10 ` Eli Zaretskii
2024-08-09 9:19 ` Quang Kien Nguyen
2024-08-09 11:03 ` Eli Zaretskii
2024-08-13 12:12 ` Quang Kien Nguyen
2024-08-13 12:37 ` Eli Zaretskii
2024-08-13 15:51 ` Pip Cet
2024-08-13 18:26 ` Quang Kien Nguyen
2024-08-13 19:19 ` Eli Zaretskii
2024-08-13 20:22 ` Quang Kien Nguyen
2024-08-14 13:11 ` Sebastián Monía
2024-08-14 17:24 ` Quang Kien Nguyen
2024-08-16 20:09 ` Sebastián Monía
2024-08-17 11:37 ` Sebastián Monía
2024-08-17 12:54 ` Eli Zaretskii
2024-08-17 13:24 ` Sebastián Monía
2024-08-19 14:34 ` Sebastián Monía
2024-08-19 14:55 ` Eli Zaretskii
2024-08-19 15:12 ` Pip Cet
2024-08-19 15:23 ` Sebastián Monía
2024-08-19 15:31 ` Quang Kien Nguyen
2024-08-19 16:23 ` Quang Kien Nguyen
2024-08-21 18:14 ` Sebastián Monía
2024-08-21 18:20 ` Pip Cet
2024-08-21 19:46 ` Sebastián Monía
2024-08-21 18:22 ` Ihor Radchenko
2024-08-21 19:48 ` Sebastián Monía
2024-08-22 17:34 ` Sebastián Monía
2024-08-22 17:51 ` Pip Cet
2024-08-22 18:34 ` Eli Zaretskii
2024-08-22 19:12 ` Quang Kien Nguyen
2024-08-23 5:32 ` Eli Zaretskii
2024-08-22 19:14 ` Pip Cet
2024-08-23 5:38 ` Eli Zaretskii
2024-08-23 7:59 ` Pip Cet
2024-08-23 13:08 ` Eli Zaretskii
2024-08-23 13:42 ` Quang Kien Nguyen
2024-08-23 13:48 ` Pip Cet
2024-08-23 14:35 ` Eli Zaretskii
2024-08-23 14:54 ` Quang Kien Nguyen
2024-08-23 16:08 ` Eli Zaretskii
2024-08-23 18:23 ` Sebastián Monía
2024-08-23 13:44 ` Pip Cet
2024-08-23 14:32 ` Eli Zaretskii
2024-08-23 15:51 ` Pip Cet
2024-08-23 16:17 ` Eli Zaretskii
2024-08-23 18:57 ` Pip Cet
2024-08-23 19:28 ` Eli Zaretskii
2024-08-24 17:31 ` Pip Cet
2024-08-25 3:17 ` Quang Kien Nguyen
2024-08-30 19:59 ` Sebastián Monía
2024-09-01 8:21 ` Kien Nguyen
2024-09-01 8:43 ` Eli Zaretskii
2024-09-01 9:36 ` Kien Nguyen
2024-09-01 10:28 ` Eli Zaretskii
2024-09-01 11:59 ` Eli Zaretskii
2024-09-01 18:54 ` Kien Nguyen
2024-09-01 19:27 ` Eli Zaretskii
2024-09-01 19:44 ` Pip Cet
2024-09-01 21:42 ` Kien Nguyen
2024-09-02 11:08 ` Eli Zaretskii
2024-09-03 4:12 ` Kien Nguyen
2024-09-03 10:37 ` Pip Cet
2024-09-03 16:50 ` Kien Nguyen
2024-09-03 17:48 ` Pip Cet
2024-09-07 8:19 ` Eli Zaretskii
2024-09-01 10:49 ` Pip Cet
2024-09-01 12:15 ` Kien Nguyen
2024-08-22 18:11 ` Eli Zaretskii
2024-08-22 19:17 ` Sebastián Monía
2024-08-23 5:45 ` Eli Zaretskii
2024-08-07 19:50 ` Pip Cet
2024-08-07 23:14 ` Quang Kien Nguyen
2024-08-08 5:15 ` Eli Zaretskii
2024-08-06 14:18 ` Pip Cet
2024-08-07 11:03 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='X1K9ijqyijsuEyESAzg_lsTfLQ8Qf1zg05Fooct7r9DC0mik90PpS8TYh1StWbT6iPQdSCHdcdSsPfAwTmNBGuQaSssVVxjQcyQVNKHqw5E=@protonmail.com' \
--to=pipcet@protonmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
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).