pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang/kaffe



Module Name:    pkgsrc
Committed By:   dholland
Date:           Sat Jan  3 03:57:09 UTC 2026

Modified Files:
        pkgsrc/lang/kaffe: Makefile distinfo
Added Files:
        pkgsrc/lang/kaffe/patches: patch-kaffe-kaffevm-exception.c
            patch-kaffe-kaffevm-intrp-methodcalls.c
            patch-kaffe-kaffevm-stringParsing.c

Log Message:
lang/kaffe: fix build with gcc14

Bump PKGREVISION (to 9) because the va_list abuse fixes materially
change the code.


To generate a diff of this commit:
cvs rdiff -u -r1.78 -r1.79 pkgsrc/lang/kaffe/Makefile
cvs rdiff -u -r1.38 -r1.39 pkgsrc/lang/kaffe/distinfo
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-exception.c \
    pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-intrp-methodcalls.c \
    pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-stringParsing.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/lang/kaffe/Makefile
diff -u pkgsrc/lang/kaffe/Makefile:1.78 pkgsrc/lang/kaffe/Makefile:1.79
--- pkgsrc/lang/kaffe/Makefile:1.78     Sun Nov  3 19:04:02 2019
+++ pkgsrc/lang/kaffe/Makefile  Sat Jan  3 03:57:08 2026
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.78 2019/11/03 19:04:02 rillig Exp $
+# $NetBSD: Makefile,v 1.79 2026/01/03 03:57:08 dholland Exp $
 #
 
 .include "Makefile.common"
 
-PKGREVISION=   8
+PKGREVISION=   9
 
 CONFLICTS+=            kaffe-nox11-[0-9]*
 

Index: pkgsrc/lang/kaffe/distinfo
diff -u pkgsrc/lang/kaffe/distinfo:1.38 pkgsrc/lang/kaffe/distinfo:1.39
--- pkgsrc/lang/kaffe/distinfo:1.38     Tue Oct 26 10:51:40 2021
+++ pkgsrc/lang/kaffe/distinfo  Sat Jan  3 03:57:08 2026
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.38 2021/10/26 10:51:40 nia Exp $
+$NetBSD: distinfo,v 1.39 2026/01/03 03:57:08 dholland Exp $
 
 BLAKE2s (kaffe-1.1.7.tar.gz) = 3ea8550d1a4009c7cffe1d729eaad4068682118dab70cbd34ff60c1ddf6c6794
 SHA512 (kaffe-1.1.7.tar.gz) = 1edab9d1a2ed96230b2342a1770d83d37834aa748b273ef197777aecb4a2fee7fc57843ce0b5f7809c90af2e04ef6b2251d4516e8d088942acb548e824d28bc2
@@ -17,6 +17,9 @@ SHA1 (patch-bc) = 43b2f18909e4939366afe9
 SHA1 (patch-ca) = 0dc783a8e78016ef5e5e2f3392644690e3a2de9a
 SHA1 (patch-cb) = c698b0a2e078cc035dfd7401617fc8d4c2ef5fbe
 SHA1 (patch-cc) = df48315c9470d433e33fd80136d7bf7f60f83e1d
+SHA1 (patch-kaffe-kaffevm-exception.c) = 340ef01e37d39759b839f15127998eea7634a5d4
+SHA1 (patch-kaffe-kaffevm-intrp-methodcalls.c) = 7ba58d826cf5ff84980cf0fabe6f09ffb5ea83f8
+SHA1 (patch-kaffe-kaffevm-stringParsing.c) = 2b8cc3cbbf8f8a0aac981a61ee012faffffaf5ff
 SHA1 (patch-libraries_clib_awt_X_imggif.c) = c4da4eb55282b5c616612182e247f2080f6f249f
 SHA1 (patch-libraries_clib_awt_X_imgpng.c) = 0cb5d6ef9349c1f6e1ac1d5885f574f4e2a0aac9
 SHA1 (patch-libraries_javalib_external_classpath_native_jni_gtk-peer_gnu__java__awt__peer__gtk__GdkTextLayout.c) = d3498337e52a735b14ff75dfaaf6dec7f9cabbef

Added files:

Index: pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-exception.c
diff -u /dev/null pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-exception.c:1.1
--- /dev/null   Sat Jan  3 03:57:09 2026
+++ pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-exception.c   Sat Jan  3 03:57:09 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-kaffe-kaffevm-exception.c,v 1.1 2026/01/03 03:57:09 dholland Exp $
+
+Fix build with gcc14.
+
+--- kaffe/kaffevm/exception.c~ 2006-03-15 20:11:12.000000000 +0000
++++ kaffe/kaffevm/exception.c
+@@ -421,7 +421,7 @@ dispatchException(Hjava_lang_Throwable* 
+               /*
+                * if we reach the last jni frame, we're done
+                */
+-              if (lastJniFrame && vmExcept_JNIContains(lastJniFrame, frame->fp)) {
++              if (lastJniFrame && vmExcept_JNIContains(lastJniFrame, (void *)frame->fp)) {
+                       thread_data->exceptPtr = lastJniFrame;
+                       vmExcept_jumpToHandler(lastJniFrame); /* doesn't return */
+               }
Index: pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-intrp-methodcalls.c
diff -u /dev/null pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-intrp-methodcalls.c:1.1
--- /dev/null   Sat Jan  3 03:57:09 2026
+++ pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-intrp-methodcalls.c   Sat Jan  3 03:57:09 2026
@@ -0,0 +1,23 @@
+$NetBSD: patch-kaffe-kaffevm-intrp-methodcalls.c,v 1.1 2026/01/03 03:57:09 dholland Exp $
+
+Hack to silence a gcc14 build error. Not at all clear if the code is
+correct; the hack just restores the status quo.
+
+--- kaffe/kaffevm/intrp/methodcalls.c~ 2006-03-04 17:51:04.000000000 +0000
++++ kaffe/kaffevm/intrp/methodcalls.c
+@@ -128,7 +128,14 @@ engine_callMethod (callMethodInfo *call)
+                       if (func == NULL) {
+                               throwError(&einfo);
+                       }
+-                      setMethodCodeStart(meth, func);
++                      /*
++                       * XXX: func is the wrong pointer type, and
++                       * this started failing with gcc14. Laundering
++                       * through (void *) makes it compile on the
++                       * assumption that whatever it's doing was
++                       * intended... but it may not have been.
++                       */
++                      setMethodCodeStart(meth, (void *)func);
+                       meth->accflags |= ACC_TRANSLATED;
+               }
+ 
Index: pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-stringParsing.c
diff -u /dev/null pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-stringParsing.c:1.1
--- /dev/null   Sat Jan  3 03:57:09 2026
+++ pkgsrc/lang/kaffe/patches/patch-kaffe-kaffevm-stringParsing.c       Sat Jan  3 03:57:09 2026
@@ -0,0 +1,304 @@
+$NetBSD: patch-kaffe-kaffevm-stringParsing.c,v 1.1 2026/01/03 03:57:09 dholland Exp $
+
+Patch up va_list abuse.
+
+--- kaffe/kaffevm/stringParsing.c~     2005-08-10 18:56:01.000000000 +0000
++++ kaffe/kaffevm/stringParsing.c
+@@ -26,6 +26,10 @@
+ #define spMalloc(x) gc_malloc(x, KGC_ALLOC_FIXED)
+ #define spFree(x) gc_free(x)
+ 
++struct va_list_wrapper {
++      va_list valist;
++};
++
+ int cmpPStrStr(parsedString *ps, char *str)
+ {
+       char *ps_pos, *ps_end;
+@@ -307,7 +311,8 @@ int storeValue(parseErrorInfo *pe, parse
+ 
+ static
+ void skipBlock(stringScript *script, void **values,
+-             stringScript **script_pos, int *values_pos, va_list *args)
++             stringScript **script_pos, int *values_pos,
++             struct va_list_wrapper *args)
+ {
+       int op, skip_depth = 0;
+       /* Used to quiet the compiler */
+@@ -320,7 +325,7 @@ void skipBlock(stringScript *script, voi
+       }
+       else
+       {
+-              op = va_arg(*args, int);
++              op = va_arg(args->valist, int);
+       }
+       while( skip_depth >= 0 )
+       {
+@@ -341,7 +346,7 @@ void skipBlock(stringScript *script, voi
+                       }
+                       else
+                       {
+-                              c_ptr = va_arg(*args, char *);
++                              c_ptr = va_arg(args->valist, char *);
+                       }
+                       skip_depth++;
+                       break;
+@@ -367,7 +372,7 @@ void skipBlock(stringScript *script, voi
+                       if( values )
+                               (*values_pos)++;
+                       else
+-                              v_ptr = va_arg(*args, void *);
++                              v_ptr = va_arg(args->valist, void *);
+                       (*script_pos)++;
+                       break;
+               case SPO_While:
+@@ -378,8 +383,8 @@ void skipBlock(stringScript *script, voi
+                       }
+                       else
+                       {
+-                              c_ptr = va_arg(*args, char *);
+-                              c_ptr = va_arg(*args, char *);
++                              c_ptr = va_arg(args->valist, char *);
++                              c_ptr = va_arg(args->valist, char *);
+                       }
+                       break;
+               case SPO_Expect:
+@@ -390,7 +395,7 @@ void skipBlock(stringScript *script, voi
+                       }
+                       else
+                       {
+-                              c_ptr = va_arg(*args, char *);
++                              c_ptr = va_arg(args->valist, char *);
+                       }
+                       break;
+               case SPO_WhileSpace:
+@@ -405,8 +410,8 @@ void skipBlock(stringScript *script, voi
+                       }
+                       else
+                       {
+-                              v_ptr = va_arg(*args, void *);
+-                              v_ptr = va_arg(*args, void *);
++                              v_ptr = va_arg(args->valist, void *);
++                              v_ptr = va_arg(args->valist, void *);
+                       }
+                       break;
+               case SPO_OneOf:
+@@ -417,7 +422,7 @@ void skipBlock(stringScript *script, voi
+                       }
+                       else
+                       {
+-                              c_ptr = va_arg(*args, char *);
++                              c_ptr = va_arg(args->valist, char *);
+                       }
+                       break;
+               default:
+@@ -428,7 +433,7 @@ void skipBlock(stringScript *script, voi
+                       if( script )
+                               op = (*script_pos)->op;
+                       else
+-                              op = va_arg(*args, int);
++                              op = va_arg(args->valist, int);
+               }
+       }
+ }
+@@ -439,7 +444,7 @@ char *skipChars(char *str, char *str_end
+       assert(str != 0);
+       assert(str_end != 0);
+ 
+-      while( (str < str_end) && !isspace(*str) )
++      while( (str < str_end) && !isspace((unsigned char)*str) )
+       {
+               str++;
+       }
+@@ -452,7 +457,7 @@ char *skipSpace(char *str, char *str_end
+       assert(str != 0);
+       assert(str_end != 0);
+ 
+-      while( (str < str_end) && isspace(*str) )
++      while( (str < str_end) && isspace((unsigned char)*str) )
+       {
+               str++;
+       }
+@@ -465,36 +470,17 @@ int parseString_private(parseErrorInfo *
+                       stringScript *script,
+                       void **values,
+                       int op,
+-                      va_list args)
++                      va_list args_in)
+ {
+       char *str, *str_end, *str_ptr = NULL, *term_ptr, *new_pos = NULL;
+       int values_pos = 0, len, retval = 1;
+       stringScript *script_pos = script;
+       parseValue pv;
+       parseStack ps;
++      struct va_list_wrapper args;
++
++      va_copy(args.valist, args_in);
+ 
+-#ifdef VA_LIST_IS_ARRAY
+-      /* Use temporary copy of args on platforms where va_list
+-       * is an array.
+-       *
+-       * We sometimes need to pass the address of a va_list to
+-       * another function. C Standard mandates array types in
+-       * prototypes to be silently coerced into pointers to base
+-       * objects. If va_list is an array, this results in the
+-       * receiving function expecting a pointer to a va_list array
+-       * member, but getting a pointer to a pointer instead when
+-       * we pass &args.
+-       *
+-       * Copying the va_list into a temporary buffer, and copying
+-       * it back 'undoes' the coercion.
+-       *
+-       * A longer explanation was posted by Graeme Peterson on the
+-       * GDB mailing list on 2002-04-15.
+-       */
+-
+-        va_list     tmp_args;
+-        VA_LIST_COPY (tmp_args, args);
+-#endif
+ 
+       assert(subString != NULL);
+ 
+@@ -514,7 +500,7 @@ int parseString_private(parseErrorInfo *
+               {
+               case SPO_End:
+                       if( ps.top->op == SPO_Do )
+-                              VA_LIST_COPY(args, ps.top->args);
++                              va_copy(args.valist, ps.top->args);
+                       else
+                               popFrame(&ps);
+                       script_pos++;
+@@ -527,7 +513,7 @@ int parseString_private(parseErrorInfo *
+                       }
+                       else
+                       {
+-                              str_ptr = va_arg(args, char *);
++                              str_ptr = va_arg(args.valist, char *);
+                       }
+                       if( (str = strstr(str, str_ptr)) &&
+                           (str < str_end) )
+@@ -568,7 +554,7 @@ int parseString_private(parseErrorInfo *
+                       if( values )
+                               pv.storage.p = values[values_pos++];
+                       else
+-                              pv.storage.p = va_arg(args, void *);
++                              pv.storage.p = va_arg(args.valist, void *);
+                       script_pos++;
+                       break;
+               case SPO_OneOf:
+@@ -580,7 +566,7 @@ int parseString_private(parseErrorInfo *
+                       }
+                       else
+                       {
+-                              str_ptr = va_arg(args, char *);
++                              str_ptr = va_arg(args.valist, char *);
+                       }
+                       if( (new_pos = strpbrk(str, str_ptr)) &&
+                           (new_pos < str_end) )
+@@ -591,14 +577,11 @@ int parseString_private(parseErrorInfo *
+                                                            op,
+                                                            script_pos,
+                                                            values_pos,
+-                                                           args);
++                                                           args.valist);
+                               str = new_pos;
+                       }
+                       else
+                       {
+-#ifdef VA_LIST_IS_ARRAY
+-                              VA_LIST_COPY (args, tmp_args);
+-#endif
+                               skipBlock(script, values,
+                                         &script_pos, &values_pos, &args);
+                       }
+@@ -610,7 +593,7 @@ int parseString_private(parseErrorInfo *
+                                          op,
+                                          script_pos,
+                                          values_pos,
+-                                         args);
++                                         args.valist);
+                       script_pos++;
+                       break;
+               case SPO_While:
+@@ -623,8 +606,8 @@ int parseString_private(parseErrorInfo *
+                       }
+                       else
+                       {
+-                              str_ptr = va_arg(args, char *);
+-                              term_ptr = va_arg(args, char *);
++                              str_ptr = va_arg(args.valist, char *);
++                              term_ptr = va_arg(args.valist, char *);
+                       }
+                       if( (new_pos = strstr(str, str_ptr)) &&
+                           (new_pos < str_end) )
+@@ -679,7 +662,7 @@ int parseString_private(parseErrorInfo *
+                       }
+                       else
+                       {
+-                              str_ptr = va_arg(args, char *);
++                              str_ptr = va_arg(args.valist, char *);
+                       }
+                       len = strlen(str_ptr);
+                       new_pos = str;
+@@ -705,15 +688,11 @@ int parseString_private(parseErrorInfo *
+                                                            op,
+                                                            script_pos,
+                                                            values_pos,
+-                                                           args);
++                                                           args.valist);
+                               str = new_pos + len;
+                       }
+                       else
+                       {
+-#ifdef VA_LIST_IS_ARRAY
+-                              VA_LIST_COPY (args, tmp_args);
+-#endif
+-
+                               skipBlock(script, values,
+                                         &script_pos, &values_pos, &args);
+                       }
+@@ -735,8 +714,8 @@ int parseString_private(parseErrorInfo *
+                               else
+                               {
+                                       handler = (int (*)(void *))
+-                                              va_arg(args, void *);
+-                                      v_ptr = va_arg(args, void *);
++                                              va_arg(args.valist, void *);
++                                      v_ptr = va_arg(args.valist, void *);
+                               }
+                               if( !(retval = handler(v_ptr)) )
+                               {
+@@ -755,14 +734,10 @@ int parseString_private(parseErrorInfo *
+                                                  op,
+                                                  script_pos,
+                                                  values_pos,
+-                                                 args);
++                                                 args.valist);
+                       }
+                       else
+                       {
+-#ifdef VA_LIST_IS_ARRAY
+-                              VA_LIST_COPY (args, tmp_args);
+-#endif
+-
+                               skipBlock(script, values,
+                                         &script_pos, &values_pos, &args);
+                       }
+@@ -775,7 +750,7 @@ int parseString_private(parseErrorInfo *
+               if( script )
+                       op = script_pos->op;
+               else
+-                      op = va_arg(args, int);
++                      op = va_arg(args.valist, int);
+       }
+       if( retval && (str < str_end) )
+       {
+@@ -791,6 +766,7 @@ int parseString_private(parseErrorInfo *
+               }
+       }
+       cutFrames(&ps);
++      va_end(args.valist);
+       return( retval );
+ }
+ 



Home | Main Index | Thread Index | Old Index