]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1096: if_perl: Perl 5.38 adds new symbols causing link failure v9.1.1096
authorDrew Vogel <dvogel@github>
Mon, 10 Feb 2025 19:17:56 +0000 (20:17 +0100)
committerChristian Brabandt <cb@256bit.org>
Mon, 10 Feb 2025 19:17:56 +0000 (20:17 +0100)
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 <cb@256bit.org>
src/if_perl.xs
src/version.c

index 4f2f8acbda745b5b34c7a0a1115f3a97d2588c56..990a190f8361cf7e9ec00dcd9b6610a061b54007 100644 (file)
@@ -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)
index 08af80c36e4bcb9d4da58bb6e0c27bfbded161dc..be4b7e74b60628332fce25f0ec6c82b8725442bd 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1096,
 /**/
     1095,
 /**/