Skip to content

Commit 85565cb

Browse files
committed
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.
1 parent 27a5a0e commit 85565cb

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/tools/msvc/Mkvcbuild.pm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,9 @@ sub mkvcbuild
573573

574574
# hack to prevent duplicate definitions of uid_t/gid_t
575575
push(@perl_embed_ccflags, 'PLPERL_HAVE_UID_GID');
576+
# prevent binary mismatch between MSVC built plperl and
577+
# Strawberry or msys ucrt perl libraries
578+
push(@perl_embed_ccflags, 'NO_THREAD_SAFE_LOCALE');
576579

577580
# Windows offers several 32-bit ABIs. Perl is sensitive to
578581
# sizeof(time_t), one of the ABI dimensions. To get 32-bit time_t,

0 commit comments

Comments
 (0)