Re: [PATCH] Add native windows on arm64 support
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Dave Cramer <davecramer@postgres.rocks>
Cc: Andres Freund <andres@anarazel.de>,
Anthony Roberts <anthony.roberts@linaro.org>,
Daniel Gustafsson <daniel@yesql.se>, Lina Iyer <lina.iyer@linaro.org>,
Michael Paquier <michael@paquier.xyz>, Mike Holmes <mike.holmes@linaro.org>,
Peter Eisentraut <peter@eisentraut.org>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Thomas Munro <thomas.munro@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2024-01-31T15:20:54Z
Lists: pgsql-hackers
Attachments
- arm64.patch (text/x-patch) patch
On 2024-01-30 Tu 17:54, Dave Cramer wrote: > > > > On Tue, Jan 30, 2024 at 4:56 PM Andrew Dunstan <andrew@dunslane.net> > wrote: > > > On 2024-01-30 Tu 09:50, Dave Cramer wrote: >> >> >> On Tue, 30 Jan 2024 at 08:38, Andrew Dunstan >> <andrew@dunslane.net> wrote: >> >> >> On 2024-01-29 Mo 11:20, Dave Cramer wrote: >>> >>> Dave Cramer >>> www.postgres.rocks <http://www.postgres.rocks> >>> >>> >>> On Mon, 29 Jan 2024 at 11:16, Andrew Dunstan >>> <andrew@dunslane.net> wrote: >>> >>> >>> On 2024-01-26 Fr 09:18, Dave Cramer wrote: >>>> >>>> >>>> On Fri, 26 Jan 2024 at 07:36, Andrew Dunstan >>>> <andrew@dunslane.net> wrote: >>>> >>>> >>>> On 2024-01-25 Th 20:32, Michael Paquier wrote: >>>> > On Thu, Jan 25, 2024 at 04:52:30PM -0500, Dave >>>> Cramer wrote: >>>> >> On Thu, 25 Jan 2024 at 16:32, Andrew Dunstan >>>> <andrew@dunslane.net> wrote: >>>> >>> On 2024-01-25 Th 16:17, Dave Cramer wrote: >>>> >>> Yeah, I think the default Developer Command >>>> Prompt for VS2022 is set up >>>> >>> for x86 builds. AIUI you should start by >>>> executing "vcvarsall x64_arm64". >>>> >> Yup, now I'm in the same state you are >>>> > Wait a minute here. Based on [1], x64_arm64 means >>>> you can use a x64 >>>> > host and you'll be able to produce ARM64 builds, >>>> still these will not >>>> > be able to run on the host where they were built. >>>> How much of the >>>> > patch posted upthread is required to produce such >>>> builds? Basically >>>> > everything from it, I guess, so as build >>>> dependencies can be >>>> > satisfied? >>>> > >>>> > [1]: >>>> https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170 >>>> >>>> >>>> If you look at the table here x86 and x64 are the >>>> only supported host >>>> architectures. But that's OK, the x64 binaries will >>>> run on arm64 (W11 >>>> ARM64 has x64 emulation builtin). If that didn't >>>> work Dave and I would >>>> not have got as far as we have. But you want the >>>> x64_arm64 argument to >>>> vcvarsall so you will get ARM64 output. >>>> >>>> >>>> I've rebuilt it using x64_arm64 and with the attached >>>> (very naive patch) and I still get an x64 binary :( >>> >>> >>> With this patch I still get a build error, but it's >>> different :-) >>> >>> >>> [1406/2088] "link" @src/backend/postgres.exe.rsp >>> FAILED: src/backend/postgres.exe src/backend/postgres.pdb >>> "link" @src/backend/postgres.exe.rsp >>> Creating library src\backend\postgres.exe.lib >>> >>> storage_lmgr_s_lock.c.obj : error LNK2019: unresolved >>> external symbol spin_delay referenced in function >>> perform_spin_delay >>> >>> src\backend\postgres.exe : fatal error LNK1120: 1 >>> unresolved externals >>> >>> >>> Did you add the latest lock.patch ? >>> >>> >> >> >> I'm a bit confused about exactly what needs to be applied. >> Can you supply a complete patch to be applied to a pristine >> checkout that will let me build? >> >> >> cheers >> >> >> See attached. >> >> > > No, that is what is giving me the error shown above (just tried > again to be certain). And it's not surprising, as patch 2 #ifdef's > out the definition of spin_delay(). > > If you can get a complete build with these patches then I suspect > you're not doing a proper ARM64 build. > > > Okay I will look when I get home in a week I made some progress. The attached is mostly taken from <https://postgr.es/m/dbee741f-b9b7-a0d5-1b1b-f9b532bb6f56@linaro.org> With it applied I was able to get a successful build using the buildfarm client. However, there are access violations when running some tests, so there is still some work to do, apparently. cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com
Commits
-
MSVC: Support building for AArch64.
- a516b3f00d74 19 (unreleased) landed
-
Remove "#ifdef WIN32" guards from src/port/win32*.c
- 09eb633e1baa 17.0 cited
-
Adjust XML test case to avoid unstable behavior.
- 4ea07e7cf3c6 16.0 landed
-
Enable RandomizedBaseAddress (ASLR) on Windows with MSVC builds
- 36389a060ca6 16.0 landed