> Have you tested with the amount of coverage provided by
vcregress.pl?
I built and ran the relevant tests with the help of
run_build.pl.
I think following tests are executed - check, contribcheck, ecpgcheck, installcheck, isolationcheck, modulescheck, and upgradecheck.
Yes, I think Travis doesn't yet support Windows/Arm64 platform.
> + if ($solution->{platform} eq 'ARM64') {
> + push(@pgportfiles, 'pg_crc32c_armv8_choose.c');
> + push(@pgportfiles, 'pg_crc32c_armv8.c');
> + } else {
> + push(@pgportfiles, 'pg_crc32c_sse42_choose.c');
> + push(@pgportfiles, 'pg_crc32c_sse42.c');
> + }
>
> +++ b/src/port/pg_crc32c_armv8.c
> +#ifndef _MSC_VER
> #include <arm_acle.h>
> +#endif
> [ ... ]
> +#ifdef _M_ARM64
> + /*
> + * arm64 way of hinting processor for spin loops optimisations
> + * ref:
https://community.arm.com/support-forums/f/infrastructure-solutions-forum/48654/ssetoneon-faq> + */
> + __isb(_ARM64_BARRIER_SY);
> +#else
> I think that such extra optimizations had better be in a separate
> patch, and we should focus on getting the build done first.
> This would mean that a basic patch could be done with just the changes
> for
gendef.pl, and the first part of the changes inMSBuildProject.pm.
> Would that not be enough?
I cannot build without any of the above changes. Nothing specific for optimization
is added to this patch.
> + # arm64 linker only supports dynamic base address
> + my $cfgrandbaseaddress = $self->{platform} eq 'ARM64' ? 'true' : 'false';
> This issue is still lying around, and you may have been lucky. Would
> there be any issues to remove this change to get a basic support in?
> As mentioned upthread, there is a long history of Postgres with ASLR.
MSVC linker doesn't allow non-random base addresses for Arm64 platforms.
It is needed for basic support.