summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lang/smlnj/Makefile3
-rw-r--r--lang/smlnj/distinfo10
-rw-r--r--lang/smlnj/patches/patch-base_runtime_gc_gc-stats.h44
-rw-r--r--lang/smlnj/patches/patch-base_runtime_gc_init-gc.c27
-rw-r--r--lang/smlnj/patches/patch-base_runtime_kernel_unix-timers.c17
-rw-r--r--lang/smlnj/patches/patch-base_runtime_mach-dep_unix-prof.c15
-rw-r--r--lang/smlnj/patches/patch-src_runtime_gc_gc-stats.h44
-rw-r--r--lang/smlnj/patches/patch-src_runtime_gc_init-gc.c27
-rw-r--r--lang/smlnj/patches/patch-src_runtime_kernel_unix-timers.c17
-rw-r--r--lang/smlnj/patches/patch-src_runtime_mach-dep_unix-prof.c15
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 */
+