Hi,
On Tue, Sep 07, 2021 at 09:24:31PM +0200, Christian Weisgerber wrote:
> lang/ghc The OpenBSD ports mailing-list <[email protected]>
Untested patch -- I'll probably get a test build with it together
with all ports depending on ghc tomorrow, but if anyone want's to
beat me ...
Ciao,
Kili
Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/ghc/Makefile,v
retrieving revision 1.188
diff -u -p -r1.188 Makefile
--- Makefile 16 Aug 2021 21:23:18 -0000 1.188
+++ Makefile 7 Sep 2021 20:42:00 -0000
@@ -19,6 +19,8 @@ DISTNAME = ghc-${GHC_VERSION}
CATEGORIES = lang devel
HOMEPAGE = https://www.haskell.org/ghc/
+REVISION = 0
+
# Version of the precompiled binaries
BIN_VER = 8.10.3.20210429
Index: patches/patch-rts_Stats_c
===================================================================
RCS file: patches/patch-rts_Stats_c
diff -N patches/patch-rts_Stats_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-rts_Stats_c 7 Sep 2021 20:42:00 -0000
@@ -0,0 +1,53 @@
+$OpenBSD$
+
+Kill use of %n format specifier.
+
+Index: rts/Stats.c
+--- rts/Stats.c.orig
++++ rts/Stats.c
+@@ -69,7 +69,7 @@ static Time *GC_coll_cpu = NULL;
+ static Time *GC_coll_elapsed = NULL;
+ static Time *GC_coll_max_pause = NULL;
+
+-static void statsPrintf( char *s, ... ) GNUC3_ATTRIBUTE(format (PRINTF, 1,
2));
++static int statsPrintf( char *s, ... ) GNUC3_ATTRIBUTE(format (PRINTF, 1, 2));
+ static void statsFlush( void );
+ static void statsClose( void );
+
+@@ -1024,8 +1024,10 @@ static void report_summary(const RTSSummaryStats* sum)
+
+ for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
+ int prefix_length = 0;
+- statsPrintf("%*s" "gen[%" FMT_Word32 "%n",
+- col_width[0], "", g, &prefix_length);
++ prefix_length = statsPrintf("%*s" "gen[%" FMT_Word32,
++ col_width[0], "", g);
++ if (prefix_length < 0)
++ prefix_length = 0;
+ prefix_length -= col_width[0];
+ int suffix_length = col_width[1] + prefix_length;
+ suffix_length =
+@@ -1735,9 +1737,10 @@ void getRTSStats( RTSStats *s )
+ Dumping stuff in the stats file, or via the debug message interface
+ --------------------------------------------------------------------------
*/
+
+-void
++int
+ statsPrintf( char *s, ... )
+ {
++ int ret = 0;
+ FILE *sf = RtsFlags.GcFlags.statsFile;
+ va_list ap;
+
+@@ -1745,9 +1748,10 @@ statsPrintf( char *s, ... )
+ if (sf == NULL) {
+ vdebugBelch(s,ap);
+ } else {
+- vfprintf(sf, s, ap);
++ ret = vfprintf(sf, s, ap);
+ }
+ va_end(ap);
++ return ret;
+ }
+
+ static void