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 <[email protected]>
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 [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1thZTv-001CBv-Oz%40256bit.org.