8000 Fix binary mismatch for MSVC plperl vs gcc built perl libs · Giperboloid/postgres@ccc59a8 · GitHub
[go: up one dir, main page]

Skip to content

Commit ccc59a8

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 3274ec0 commit ccc59a8

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 5405 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)
0