Skip to content

Commit f3f70b8

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 4e9e1b2 commit f3f70b8

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
@@ -587,6 +587,9 @@ sub mkvcbuild
587587

588588
# hack to prevent duplicate definitions of uid_t/gid_t
589589
push(@perl_embed_ccflags, 'PLPERL_HAVE_UID_GID');
590+
# prevent binary mismatch between MSVC built plperl and
591+
# Strawberry or msys ucrt perl libraries
592+
push(@perl_embed_ccflags, 'NO_THREAD_SAFE_LOCALE');
590593

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

0 commit comments

Comments
 (0)