patch 9.1.1096: if_perl: Perl 5.38 adds new symbols causing link failure Commit: https://github.com/vim/vim/commit/97baa1cfe83c08eff1a452aca8d91f51112ca932 Author: Drew Vogel <dvogel@github> Date: Mon Feb 10 20:17:56 2025 +0100
patch 9.1.1096: if_perl: Perl 5.38 adds new symbols causing link failure Problem: if_perl: Perl 5.38 adds new symbols causing link failure Solution: add stub symbols (Drew Vogel) closes: #16611 Signed-off-by: Drew Vogel <dvogel@github> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/if_perl.xs b/src/if_perl.xs index 4f2f8acbd..990a190f8 100644 --- a/src/if_perl.xs +++ b/src/if_perl.xs @@ -192,7 +192,7 @@ typedef int perl_key; # define Perl_croak_xs_usage dll_Perl_croak_xs_usage # endif # ifndef PROTO -# ifdef PERL_IMPLICIT_CONTEXT +# if defined(PERL_IMPLICIT_CONTEXT) # define Perl_croak_nocontext dll_Perl_croak_nocontext # endif # define Perl_call_argv dll_Perl_call_argv @@ -312,6 +312,9 @@ typedef int perl_key; # ifdef PERL_USE_THREAD_LOCAL # define PL_current_context *dll_PL_current_context # endif +# if defined(DYNAMIC_PERL) && ((PERL_REVISION == 5) && (PERL_VERSION >= 38)) +# define PL_memory_wrap *dll_PL_memory_wrap +# endif # define Perl_hv_iternext_flags dll_Perl_hv_iternext_flags # define Perl_hv_iterinit dll_Perl_hv_iterinit # define Perl_hv_iterkey dll_Perl_hv_iterkey @@ -352,7 +355,7 @@ static void (*Perl_croak_xs_usage)(pTHX_ const CV *const, const char *const para __attribute__noreturn__; # endif # endif -# ifdef PERL_IMPLICIT_CONTEXT +# if defined(PERL_IMPLICIT_CONTEXT) static void (*Perl_croak_nocontext)(const char*, ...) __attribute__noreturn__; # endif static I32 (*Perl_dowantarray)(pTHX); @@ -484,6 +487,9 @@ static perl_key* (*Perl_Gthr_key_ptr)_((pTHX)); # ifdef PERL_USE_THREAD_LOCAL static void** dll_PL_current_context; # endif +# if defined(DYNAMIC_PERL) && ((PERL_REVISION == 5) && (PERL_VERSION >= 38)) +static const char **dll_PL_memory_wrap; +# endif static void (*boot_DynaLoader)_((pTHX_ CV*)); static HE * (*Perl_hv_iternext_flags)(pTHX_ HV *, I32); static I32 (*Perl_hv_iterinit)(pTHX_ HV *); @@ -633,9 +639,12 @@ static struct { # ifdef USE_ITHREADS {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key}, # endif -# ifdef PERL_USE_THREAD_LOCAL +# ifdef PERL_USE_THREAD_LOCAL {"PL_current_context", (PERL_PROC*)&dll_PL_current_context}, -# endif +# endif +# if defined(DYNAMIC_PERL) && ((PERL_REVISION == 5) && (PERL_VERSION >= 38)) + {"PL_memory_wrap", (PERL_PROC*)&dll_PL_memory_wrap}, +# endif # else {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, @@ -1475,6 +1484,19 @@ vim_IOLayer_init(void) // during build time. Manually fix it here by redirecting these functions // towards the dynamically loaded version. +# if (PERL_REVISION == 5) && (PERL_VERSION >= 38) +# undef Perl_croak_nocontext +void Perl_croak_nocontext(const char *pat, ...) +{ + dTHX; + va_list args; + va_start(args, pat); + (*dll_Perl_croak_nocontext)(pat, &args); + NOT_REACHED; /* NOTREACHED */ + va_end(args); +} +# endif + # if (PERL_REVISION == 5) && (PERL_VERSION >= 18) # undef Perl_sv_free2 void Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt) diff --git a/src/version.c b/src/version.c index 08af80c36..be4b7e74b 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1096, /**/ 1095, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1thZTv-001CBv-Oz%40256bit.org.