postgres.git / summary / log / commit / refs
commit 68d89d80c3db06ad080a0f291e165456fb2f51f7
Author: Andrew Dunstan <andrew@dunslane.net>
Date: Sun Nov 27 14:03:22 2022 +0000
First released in: 16.0, 11.19, 12.14, 13.10, 14.7, 15.2
Fix binary mismatch for MSVC plperl vs gcc built perl libs
When loading plperl built against Strawberry perl or the msys2 ucrt perl
that have been built with gcc, a binary mismatch has been encountered
which looks like this:
loadable library and perl binaries are mismatched (got handshake key 0000000012800080, needed 0000000012900080)
To cure this we bring the handshake keys into sync by adding
NO_THREAD_SAFE_LOCALE to the defines used to build plperl.
Discussion: https://postgr.es/m/20211005004334.tgjmro4kuachwiuc@alap3.anarazel.de
Discussion: https://postgr.es/m/c2da86a0-2906-744c-923d-16da6047875e@dunslane.net
Backpatch to all live branches.
src/tools/msvc/Mkvcbuild.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index a8195a49306..67b2ea9ee9b 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -574,6 +574,9 @@ sub mkvcbuild
# hack to prevent duplicate definitions of uid_t/gid_t
push(@perl_embed_ccflags, 'PLPERL_HAVE_UID_GID');
+ # prevent binary mismatch between MSVC built plperl and
+ # Strawberry or msys ucrt perl libraries
+ push(@perl_embed_ccflags, 'NO_THREAD_SAFE_LOCALE');
# Windows offers several 32-bit ABIs. Perl is sensitive to
# sizeof(time_t), one of the ABI dimensions. To get 32-bit time_t,
[parent: a2dcd78dd083]