libphobos: Fix FAIL phobos.exp/core.time on CentOS 5.11, Linux 2.6.18

Merges upstream druntime e03164b5.

Reviewed-on: https://github.com/dlang/druntime/pull/2581

libphobos/ChangeLog:

2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR d/89432
	* testsuite/lib/libphobos.exp (check_effective_target_linux_pre_2639):
	New proc.
	* testsuite/libphobos.druntime/druntime.exp: Add compiler flag
	-fversion=Linux_Pre_2639 if target is linux_pre_2639.
	* testsuite/libphobos.druntime_shared/druntime_shared.exp: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@270554 138bc75d-0d04-0410-961f-82ee72b054a4
diff --git a/libphobos/ChangeLog b/libphobos/ChangeLog
index ffe44fb..2d036d6 100644
--- a/libphobos/ChangeLog
+++ b/libphobos/ChangeLog
@@ -1,5 +1,14 @@
 2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
 
+	PR d/89432
+	* testsuite/lib/libphobos.exp (check_effective_target_linux_pre_2639):
+	New proc.
+	* testsuite/libphobos.druntime/druntime.exp: Add compiler flag
+	-fversion=Linux_Pre_2639 if target is linux_pre_2639.
+	* testsuite/libphobos.druntime_shared/druntime_shared.exp: Likewise.
+
+2019-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>
+
 	PR d/88654
 	* testsuite/lib/libphobos.exp (libphobos-dg-test): Check
 	libphobos_skipped_test_p before running test.
diff --git a/libphobos/libdruntime/MERGE b/libphobos/libdruntime/MERGE
index 9fe51fd..d815647 100644
--- a/libphobos/libdruntime/MERGE
+++ b/libphobos/libdruntime/MERGE
@@ -1,4 +1,4 @@
-513652173d6f02206be3ddaa2b6ed0b191ea4e3d
+e03164b5259a9f116eb91dfa5a18c192fa72e575
 
 The first line of this file holds the git revision number of the last
 merge done from the dlang/druntime repository.
diff --git a/libphobos/libdruntime/core/time.d b/libphobos/libdruntime/core/time.d
index 1982122..a7640ec 100644
--- a/libphobos/libdruntime/core/time.d
+++ b/libphobos/libdruntime/core/time.d
@@ -2539,8 +2539,11 @@
 
     static bool clockSupported(ClockType c)
     {
-        version (Linux_Pre_2639) // skip CLOCK_BOOTTIME on older linux kernels
-            return c != ClockType.second && c != ClockType.bootTime;
+        // Skip unsupported clocks on older linux kernels, assume that only
+        // CLOCK_MONOTONIC and CLOCK_REALTIME exist, as that is the lowest
+        // common denominator supported by all versions of Linux pre-2.6.12.
+        version (Linux_Pre_2639)
+            return c == ClockType.normal || c == ClockType.precise;
         else
             return c != ClockType.second; // second doesn't work with MonoTimeImpl
 
diff --git a/libphobos/testsuite/lib/libphobos.exp b/libphobos/testsuite/lib/libphobos.exp
index d47da17..d3fe753 100644
--- a/libphobos/testsuite/lib/libphobos.exp
+++ b/libphobos/testsuite/lib/libphobos.exp
@@ -261,3 +261,20 @@
 	int main (void) { return 0; }
     } "-lcurl"]
 }
+
+# Return true if the target is linux version < 2.6.39
+proc check_effective_target_linux_pre_2639 { } {
+    if { ![istarget *-*-linux*] } {
+	return 0
+    }
+
+    if { [check_no_compiler_messages linux_pre_2639 assembly {
+	#include <linux/version.h>
+	#if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE < KERNEL_VERSION(2.6.39)
+	#error Yes, it is.
+	#endif
+    }] } {
+	return 0
+    }
+    return 1
+}
diff --git a/libphobos/testsuite/libphobos.druntime/druntime.exp b/libphobos/testsuite/libphobos.druntime/druntime.exp
index f93562b..0f79235 100644
--- a/libphobos/testsuite/libphobos.druntime/druntime.exp
+++ b/libphobos/testsuite/libphobos.druntime/druntime.exp
@@ -22,13 +22,19 @@
 # Gather a list of all tests.
 set tests [lsort [filter_libphobos_unittests [find $srcdir/../libdruntime "*.d"]]]
 
+set version_flags ""
+
+if { [is-effective-target linux_pre_2639] } {
+    lappend version_flags "-fversion=Linux_Pre_2639"
+}
+
 # Initialize dg.
 dg-init
 
 # Main loop.
 foreach test $tests {
     set libphobos_test_name "$subdir/[dg-trim-dirname $srcdir/../libdruntime $test]"
-    dg-runtest $test "" "-fmain -fbuilding-libphobos-tests"
+    dg-runtest $test "" "-fmain -fbuilding-libphobos-tests $version_flags"
     set libphobos_test_name ""
 }
 
diff --git a/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp b/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
index 77b0402..1a067c3 100644
--- a/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
+++ b/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
@@ -22,6 +22,12 @@
 # Gather a list of all tests.
 set tests [lsort [filter_libphobos_unittests [find $srcdir/../libdruntime "*.d"]]]
 
+set version_flags ""
+
+if { [is-effective-target linux_pre_2639] } {
+    lappend version_flags "-fversion=Linux_Pre_2639"
+}
+
 # Initialize dg.
 dg-init
 
@@ -29,7 +35,7 @@
 foreach test $tests {
     set libphobos_test_name "$subdir/[dg-trim-dirname $srcdir/../libdruntime $test]"
     dg-runtest $test "-fversion=Shared -shared-libphobos" \
-	"-fmain -fbuilding-libphobos-tests -fno-moduleinfo"
+	"-fmain -fbuilding-libphobos-tests -fno-moduleinfo $version_flags"
     set libphobos_test_name ""
 }