libc/minimal: fix reproducibility of gmtime

struct tm has fields that were not being set by the implementation,
causing the test to fail when the uninitialized values were compared
with a static initialized result.  Zero the structure before filling it.

Closes #17794

Signed-off-by: Peter A. Bigot <pab@pabigot.com>
diff --git a/lib/libc/minimal/source/time/gmtime.c b/lib/libc/minimal/source/time/gmtime.c
index ab6c26d..b8aa19f 100644
--- a/lib/libc/minimal/source/time/gmtime.c
+++ b/lib/libc/minimal/source/time/gmtime.c
@@ -84,6 +84,8 @@
 	bigint_type days = (z >= 0 ? z : z - 86399) / 86400;
 	unsigned int rem = z - days * 86400;
 
+	*tp = (struct tm){ 0 };
+
 	time_civil_from_days(days, tp);
 
 	tp->tm_hour = rem / 60U / 60U;
diff --git a/tests/lib/timeutil/src/test_gmtime.c b/tests/lib/timeutil/src/test_gmtime.c
index 3313839..2160851 100644
--- a/tests/lib/timeutil/src/test_gmtime.c
+++ b/tests/lib/timeutil/src/test_gmtime.c
@@ -12,7 +12,10 @@
 
 void test_gmtime(void)
 {
-	struct tm tm;
+	struct tm tm = {
+		/* Initialize an unset field */
+		.tm_isdst = 1234,
+	};
 	time_t time = 1561994005;
 
 	zassert_equal(&tm, gmtime_r(&time, &tm),