Эх сурвалжийг харах

add gcc patch fixing libstdc++ futex use for time64 compatibility

this is not the cleanest fix but should at least make it non-broken.
Rich Felker 5 жил өмнө
parent
commit
431a47af9e

+ 18 - 0
patches/gcc-5.3.0/0018-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-6.4.0/0018-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-6.5.0/0022-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-7.2.0/0017-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-7.3.0/0019-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-8.3.0/0016-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)

+ 18 - 0
patches/gcc-9.2.0/0016-libstdc++-futex-time64.diff

@@ -0,0 +1,18 @@
+--- gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc.orig	2020-01-20 14:55:05.507548334 -0500
++++ gcc-9.2.0/libstdc++-v3/src/c++11/futex.cc	2020-01-20 14:56:52.458268068 -0500
+@@ -61,7 +61,15 @@
+ 	struct timeval tv;
+ 	gettimeofday (&tv, NULL);
+ 	// Convert the absolute timeout value to a relative timeout
++#if defined(SYS_futex_time64)
++	struct
++	  {
++	    long tv_sec;
++	    long tv_nsec;
++	  } rt;
++#else
+ 	struct timespec rt;
++#endif
+ 	rt.tv_sec = __s.count() - tv.tv_sec;
+ 	rt.tv_nsec = __ns.count() - tv.tv_usec * 1000;
+ 	if (rt.tv_nsec < 0)