Skip to content

Commit 901204f

Browse files
adunstanpull[bot]
authored andcommitted
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 a620952 commit 901204f

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
@@ -585,6 +585,9 @@ sub mkvcbuild
585585

586586
# hack to prevent duplicate definitions of uid_t/gid_t
587587
push(@perl_embed_ccflags, 'PLPERL_HAVE_UID_GID');
588+
# prevent binary mismatch between MSVC built plperl and
589+
# Strawberry or msys ucrt perl libraries
590+
push(@perl_embed_ccflags, 'NO_THREAD_SAFE_LOCALE');
588591

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

0 commit comments

Comments
 (0)