diff options
-rw-r--r-- | lang/smlnj/Makefile | 3 | ||||
-rw-r--r-- | lang/smlnj/distinfo | 10 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h | 44 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-base_runtime_gc_init-gc.c | 27 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c | 17 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c | 15 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h | 44 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-src_runtime_gc_init-gc.c | 27 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c | 17 | ||||
-rw-r--r-- | lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c | 15 |
10 files changed, 217 insertions, 2 deletions
diff --git a/lang/smlnj/Makefile b/lang/smlnj/Makefile index b1499acfab1..3cafe1e9197 100644 --- a/lang/smlnj/Makefile +++ b/lang/smlnj/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.24 2012/10/02 20:11:53 asau Exp $ +# $NetBSD: Makefile,v 1.25 2016/04/14 21:58:22 dholland Exp $ # DISTNAME= boot.${BOX}-unix @@ -31,6 +31,7 @@ HOMEPAGE= http://www.smlnj.org/index.html COMMENT= Popular functional language from Bell Labs SML_VERSION= 110.73 +PKGREVISION= 1 WRKSRC= ${WRKDIR} DIST_SUBDIR= smlnj-${SML_VERSION} diff --git a/lang/smlnj/distinfo b/lang/smlnj/distinfo index d157e04abd1..fd7aee57df5 100644 --- a/lang/smlnj/distinfo +++ b/lang/smlnj/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.16 2015/11/03 22:50:44 agc Exp $ +$NetBSD: distinfo,v 1.17 2016/04/14 21:58:22 dholland Exp $ SHA1 (smlnj-110.73/MLRISC.tgz) = 59a38a4a1c63cecf97764a99577b3f929b5ccbc9 RMD160 (smlnj-110.73/MLRISC.tgz) = dd951776482f37421a17701d67c051741691c6cb @@ -96,6 +96,14 @@ SHA1 (patch-ao) = 1c66024c5949269291cbf6f815baf6162db47d31 SHA1 (patch-ap) = 8e9e28548b4e58de68a11982a355a010ea96aa29 SHA1 (patch-aq) = 7d0734b76d778d7f584d2e70d325fd72e6554b01 SHA1 (patch-at) = 376b67d25ef428377b1686fcd6232628867d6eae +SHA1 (patch-base_runtime_gc_gc-stats.h) = 35e54cb66c47c636c5a9f450cff99dced4218dd2 +SHA1 (patch-base_runtime_gc_init-gc.c) = f40e961089beab151290ffc8371a48bc9f846511 +SHA1 (patch-base_runtime_kernel_unix-timers.c) = 42f1d2964d5de37fdc232139f74fb9a95f21da07 +SHA1 (patch-base_runtime_mach-dep_unix-prof.c) = 1f28a05cfb271c569cfb9778e67076bbfb14d646 SHA1 (patch-base_runtime_objs_mk.x86-netbsd) = 1e5ca88c65066a07b818af76abc2f9f1bafdc339 SHA1 (patch-config___arch-n-opsys) = 83b357d78c0762c9b0c295444bfe9e5641aa02e0 +SHA1 (patch-src_runtime_gc_gc-stats.h) = af61db9d1f04e566d4c5c2bc5dcf4c6958f0ea78 +SHA1 (patch-src_runtime_gc_init-gc.c) = 5d1d5a13a51d732590dd4f375824bbc389a0525d +SHA1 (patch-src_runtime_kernel_unix-timers.c) = 1c1db5bce0ec1e72adafb9380027884cf746c75c +SHA1 (patch-src_runtime_mach-dep_unix-prof.c) = 90a4b81e2a8532e4e06f29bfe42c55423a0f4154 SHA1 (patch-src_runtime_objs_mk.x86-netbsd) = bd29b208b68771ecd1f3c64d896653084c6eb30e diff --git a/lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h b/lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h new file mode 100644 index 00000000000..72d30b54d60 --- /dev/null +++ b/lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h @@ -0,0 +1,44 @@ +$NetBSD: patch-base_runtime_gc_gc-stats.h,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use struct timeval instead of blithely assuming that some private +struct declaration is always bit compatible with it. (Because it +isn't.) From PR 40954. + +--- base/runtime/gc/gc-stats.h.orig 2009-03-03 18:23:38.000000000 -0500 ++++ base/runtime/gc/gc-stats.h 2009-03-03 18:25:04.000000000 -0500 +@@ -16,6 +16,7 @@ extern void ReportVM (ml_state_t *msp, i + + #define START_GC_PAUSE(HEAP) { \ + if (StatsOn) { \ ++ struct timeval tv; \ + heap_t *__heap = (HEAP); \ + stat_rec_t *__p = &(StatsBuf[NStatsRecs]); \ + Unsigned32_t __n = (Addr_t)(msp->ml_allocPtr) - \ +@@ -23,7 +24,10 @@ extern void ReportVM (ml_state_t *msp, i + CNTR_INCR(&(__heap->numAlloc), __n); \ + __p->allocCnt = __heap->numAlloc; \ + __p->numGens = 0; \ +- gettimeofday(&(__p->startTime), NIL(struct timezone *)); \ ++ gettimeofday(&tv, NIL(struct timezone *)); \ ++ /* XXX breaks in 2038 */ \ ++ __p->startTime.seconds = tv.tv_sec; \ ++ __p->startTime.uSeconds = tv.tv_usec; \ + } \ + } + +@@ -34,8 +38,11 @@ extern void ReportVM (ml_state_t *msp, i + + #define STOP_GC_PAUSE() { \ + if (StatsOn) { \ +- gettimeofday(&(StatsBuf[NStatsRecs].stopTime), \ +- NIL(struct timezone *)); \ ++ struct timeval tv; \ ++ gettimeofday(&tv, NIL(struct timezone *)); \ ++ /* XXX breaks in 2038 */ \ ++ StatsBuf[NStatsRecs].stopTime.seconds = tv.tv_sec; \ ++ StatsBuf[NStatsRecs].stopTime.uSeconds = tv.tv_usec; \ + STATS_FINISH(); \ + } \ + } + + diff --git a/lang/smlnj/patches/patch-base_runtime_gc_init-gc.c b/lang/smlnj/patches/patch-base_runtime_gc_init-gc.c new file mode 100644 index 00000000000..3032c25a548 --- /dev/null +++ b/lang/smlnj/patches/patch-base_runtime_gc_init-gc.c @@ -0,0 +1,27 @@ +$NetBSD: patch-base_runtime_gc_init-gc.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use struct timeval instead of blithely assuming that some private +struct declaration is always bit compatible with it. (Because it +isn't.) From PR 40954. + +--- base/runtime/gc/init-gc.c.orig 2009-03-03 18:15:36.000000000 -0500 ++++ base/runtime/gc/init-gc.c 2009-03-03 18:17:03.000000000 -0500 +@@ -218,12 +218,16 @@ void InitHeap (ml_state_t *msp, bool_t i + #if defined(COLLECT_STATS) + if (StatsFD > 0) { + stat_hdr_t hdr; ++ struct timeval tv; + CNTR_ZERO(&(heap->numAlloc)); + hdr.mask = STATMASK_ALLOC|STATMASK_NGENS|STATMASK_START|STATMASK_STOP; + hdr.isNewRuntime = 1; + hdr.allocSzB = params->allocSz; + hdr.numGens = params->numGens; +- gettimeofday (&(hdr.startTime), NIL(struct timezone *)); ++ gettimeofday (&tv, NIL(struct timezone *)); ++ /* XXX breaks in 2038 */ ++ hdr.startTime.seconds = tv.tv_sec; ++ hdr.startTime.uSeconds = tv.tv_usec; + write (StatsFD, (char *)&hdr, sizeof(stat_hdr_t)); + } + #endif + diff --git a/lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c b/lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c new file mode 100644 index 00000000000..7841421b5b0 --- /dev/null +++ b/lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c @@ -0,0 +1,17 @@ +$NetBSD: patch-base_runtime_kernel_unix-timers.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Don't blithely assume that some internal type has the same layout as a +system type. It doesn't. Same issue as PR 40954, but a new case that I +either didn't find at the time or has appeared since. + +--- base/runtime/kernel/unix-timers.c~ 2000-06-01 18:34:03.000000000 +0000 ++++ base/runtime/kernel/unix-timers.c +@@ -18,7 +18,7 @@ typedef struct rusage time_struct_t; + #define GET_TIME(t) getrusage(RUSAGE_SELF, &(t)) + #define SYS_TIME(t) ((t).ru_stime) + #define USR_TIME(t) ((t).ru_utime) +-#define SET_TIME(tp, t) { *((struct timeval *)(tp)) = (t); } ++#define SET_TIME(tp, t) { (tp)->seconds = (t).tv_sec; (tp)->uSeconds = (t).tv_usec; } + + #else /* !HAS_GETRUSAGE */ + diff --git a/lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c b/lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c new file mode 100644 index 00000000000..0716bf88ce2 --- /dev/null +++ b/lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c @@ -0,0 +1,15 @@ +$NetBSD: patch-base_runtime_mach-dep_unix-prof.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use own abstractions correctly. + +--- base/runtime/mach-dep/unix-prof.c~ 2005-01-18 17:58:39.000000000 +0000 ++++ base/runtime/mach-dep/unix-prof.c +@@ -34,7 +34,7 @@ void EnableProfSignals () + */ + void DisableProfSignals () + { +- SIG_SetHandler (SIGVTALRM, SIG_DFL); ++ SIG_SetDefault (SIGVTALRM); + + } /* end of DisableProfSignals */ + diff --git a/lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h b/lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h new file mode 100644 index 00000000000..43c5f56e389 --- /dev/null +++ b/lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h @@ -0,0 +1,44 @@ +$NetBSD: patch-src_runtime_gc_gc-stats.h,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use struct timeval instead of blithely assuming that some private +struct declaration is always bit compatible with it. (Because it +isn't.) From PR 40954. + +--- src/runtime/gc/gc-stats.h.orig 2009-03-03 18:23:38.000000000 -0500 ++++ src/runtime/gc/gc-stats.h 2009-03-03 18:25:04.000000000 -0500 +@@ -16,6 +16,7 @@ extern void ReportVM (ml_state_t *msp, i + + #define START_GC_PAUSE(HEAP) { \ + if (StatsOn) { \ ++ struct timeval tv; \ + heap_t *__heap = (HEAP); \ + stat_rec_t *__p = &(StatsBuf[NStatsRecs]); \ + Unsigned32_t __n = (Addr_t)(msp->ml_allocPtr) - \ +@@ -23,7 +24,10 @@ extern void ReportVM (ml_state_t *msp, i + CNTR_INCR(&(__heap->numAlloc), __n); \ + __p->allocCnt = __heap->numAlloc; \ + __p->numGens = 0; \ +- gettimeofday(&(__p->startTime), NIL(struct timezone *)); \ ++ gettimeofday(&tv, NIL(struct timezone *)); \ ++ /* XXX breaks in 2038 */ \ ++ __p->startTime.seconds = tv.tv_sec; \ ++ __p->startTime.uSeconds = tv.tv_usec; \ + } \ + } + +@@ -34,8 +38,11 @@ extern void ReportVM (ml_state_t *msp, i + + #define STOP_GC_PAUSE() { \ + if (StatsOn) { \ +- gettimeofday(&(StatsBuf[NStatsRecs].stopTime), \ +- NIL(struct timezone *)); \ ++ struct timeval tv; \ ++ gettimeofday(&tv, NIL(struct timezone *)); \ ++ /* XXX breaks in 2038 */ \ ++ StatsBuf[NStatsRecs].stopTime.seconds = tv.tv_sec; \ ++ StatsBuf[NStatsRecs].stopTime.uSeconds = tv.tv_usec; \ + STATS_FINISH(); \ + } \ + } + + diff --git a/lang/smlnj/patches/patch-src_runtime_gc_init-gc.c b/lang/smlnj/patches/patch-src_runtime_gc_init-gc.c new file mode 100644 index 00000000000..bdf1f70c862 --- /dev/null +++ b/lang/smlnj/patches/patch-src_runtime_gc_init-gc.c @@ -0,0 +1,27 @@ +$NetBSD: patch-src_runtime_gc_init-gc.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use struct timeval instead of blithely assuming that some private +struct declaration is always bit compatible with it. (Because it +isn't.) From PR 40954. + +--- src/runtime/gc/init-gc.c.orig 2009-03-03 18:15:36.000000000 -0500 ++++ src/runtime/gc/init-gc.c 2009-03-03 18:17:03.000000000 -0500 +@@ -218,12 +218,16 @@ void InitHeap (ml_state_t *msp, bool_t i + #if defined(COLLECT_STATS) + if (StatsFD > 0) { + stat_hdr_t hdr; ++ struct timeval tv; + CNTR_ZERO(&(heap->numAlloc)); + hdr.mask = STATMASK_ALLOC|STATMASK_NGENS|STATMASK_START|STATMASK_STOP; + hdr.isNewRuntime = 1; + hdr.allocSzB = params->allocSz; + hdr.numGens = params->numGens; +- gettimeofday (&(hdr.startTime), NIL(struct timezone *)); ++ gettimeofday (&tv, NIL(struct timezone *)); ++ /* XXX breaks in 2038 */ ++ hdr.startTime.seconds = tv.tv_sec; ++ hdr.startTime.uSeconds = tv.tv_usec; + write (StatsFD, (char *)&hdr, sizeof(stat_hdr_t)); + } + #endif + diff --git a/lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c b/lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c new file mode 100644 index 00000000000..6f9770d387e --- /dev/null +++ b/lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c @@ -0,0 +1,17 @@ +$NetBSD: patch-src_runtime_kernel_unix-timers.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Don't blithely assume that some internal type has the same layout as a +system type. It doesn't. Same issue as PR 40954, but a new case that I +either didn't find at the time or has appeared since. + +--- src/runtime/kernel/unix-timers.c~ 2000-06-01 18:34:03.000000000 +0000 ++++ src/runtime/kernel/unix-timers.c +@@ -18,7 +18,7 @@ typedef struct rusage time_struct_t; + #define GET_TIME(t) getrusage(RUSAGE_SELF, &(t)) + #define SYS_TIME(t) ((t).ru_stime) + #define USR_TIME(t) ((t).ru_utime) +-#define SET_TIME(tp, t) { *((struct timeval *)(tp)) = (t); } ++#define SET_TIME(tp, t) { (tp)->seconds = (t).tv_sec; (tp)->uSeconds = (t).tv_usec; } + + #else /* !HAS_GETRUSAGE */ + diff --git a/lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c b/lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c new file mode 100644 index 00000000000..68f6c2eea38 --- /dev/null +++ b/lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c @@ -0,0 +1,15 @@ +$NetBSD: patch-src_runtime_mach-dep_unix-prof.c,v 1.1 2016/04/14 21:58:22 dholland Exp $ + +Use own abstractions correctly. + +--- src/runtime/mach-dep/unix-prof.c~ 2005-01-18 17:58:39.000000000 +0000 ++++ src/runtime/mach-dep/unix-prof.c +@@ -34,7 +34,7 @@ void EnableProfSignals () + */ + void DisableProfSignals () + { +- SIG_SetHandler (SIGVTALRM, SIG_DFL); ++ SIG_SetDefault (SIGVTALRM); + + } /* end of DisableProfSignals */ + |