$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();						\
 	}								\
     }


