summary refs log tree commit diff
path: root/pkgs/servers/foundationdb/patches/gcc-fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/foundationdb/patches/gcc-fixes.patch')
-rw-r--r--pkgs/servers/foundationdb/patches/gcc-fixes.patch117
1 files changed, 117 insertions, 0 deletions
diff --git a/pkgs/servers/foundationdb/patches/gcc-fixes.patch b/pkgs/servers/foundationdb/patches/gcc-fixes.patch
new file mode 100644
index 00000000000..295e405b9fc
--- /dev/null
+++ b/pkgs/servers/foundationdb/patches/gcc-fixes.patch
@@ -0,0 +1,117 @@
+diff --git a/fdbrpc/ContinuousSample.h b/fdbrpc/ContinuousSample.h
+index 54ff1b1..577c228 100644
+--- a/fdbrpc/ContinuousSample.h
++++ b/fdbrpc/ContinuousSample.h
+@@ -26,6 +26,7 @@
+ #include "flow/IRandom.h"
+ #include <vector>
+ #include <algorithm>
++#include <cmath>
+ 
+ template <class T>
+ class ContinuousSample {
+diff --git a/fdbrpc/Smoother.h b/fdbrpc/Smoother.h
+index 3ed8e6e..fb46947 100644
+--- a/fdbrpc/Smoother.h
++++ b/fdbrpc/Smoother.h
+@@ -23,6 +23,7 @@
+ #pragma once
+ 
+ #include "flow/flow.h"
++#include <cmath>
+ 
+ struct Smoother {
+ 	// Times (t) are expected to be nondecreasing
+@@ -90,4 +91,4 @@ struct TimerSmoother {
+ 	double time, total, estimate;
+ };
+ 
+-#endif
+\ No newline at end of file
++#endif
+diff --git a/fdbrpc/libcoroutine/Coro.c b/fdbrpc/libcoroutine/Coro.c
+index cbfdc8f..9993cee 100644
+--- a/fdbrpc/libcoroutine/Coro.c
++++ b/fdbrpc/libcoroutine/Coro.c
+@@ -66,6 +66,8 @@ VALGRIND_STACK_DEREGISTER((coro)->valgrindStackId)
+ #define STACK_DEREGISTER(coro)
+ #endif
+ 
++#pragma GCC diagnostic ignored "-Wreturn-local-addr"
++
+ // Define outside
+ extern intptr_t g_stackYieldLimit;
+ 
+diff --git a/fdbserver/Knobs.cpp b/fdbserver/Knobs.cpp
+index 819c513..acfbfe7 100644
+--- a/fdbserver/Knobs.cpp
++++ b/fdbserver/Knobs.cpp
+@@ -20,6 +20,7 @@
+ 
+ #include "Knobs.h"
+ #include "fdbrpc/Locality.h"
++#include <cmath>
+ 
+ ServerKnobs const* SERVER_KNOBS = new ServerKnobs();
+ 
+diff --git a/flow/Knobs.cpp b/flow/Knobs.cpp
+index b485a84..82541d4 100644
+--- a/flow/Knobs.cpp
++++ b/flow/Knobs.cpp
+@@ -20,6 +20,7 @@
+ 
+ #include "Knobs.h"
+ #include "flow/flow.h"
++#include <cmath>
+ 
+ FlowKnobs const* FLOW_KNOBS = new FlowKnobs();
+ 
+diff --git a/flow/Platform.cpp b/flow/Platform.cpp
+index 69dac88..69b86d4 100644
+--- a/flow/Platform.cpp
++++ b/flow/Platform.cpp
+@@ -623,7 +623,7 @@ void getDiskStatistics(std::string const& directory, uint64_t& currentIOs, uint6
+ 		unsigned int minorId;
+ 		disk_stream >> majorId;
+ 		disk_stream >> minorId;
+-		if(majorId == (unsigned int) major(buf.st_dev) && minorId == (unsigned int) minor(buf.st_dev)) {
++		if(majorId == (unsigned int) gnu_dev_major(buf.st_dev) && minorId == (unsigned int) gnu_dev_minor(buf.st_dev)) {
+ 			std::string ignore;
+ 			uint64_t rd_ios;	/* # of reads completed */
+ 			//	    This is the total number of reads completed successfully.
+diff --git a/flow/TDMetric.actor.h b/flow/TDMetric.actor.h
+index 5421b83..711a960 100755
+--- a/flow/TDMetric.actor.h
++++ b/flow/TDMetric.actor.h
+@@ -36,6 +36,7 @@
+ #include "CompressedInt.h"
+ #include <algorithm>
+ #include <functional>
++#include <cmath>
+ 
+ struct MetricNameRef {
+ 	MetricNameRef() {}
+diff --git a/flow/flow.h b/flow/flow.h
+index 0c220af..f685fbc 100644
+--- a/flow/flow.h
++++ b/flow/flow.h
+@@ -248,19 +248,6 @@ public:
+ 		}
+ 	}
+ 
+-	bool operator == (ErrorOr const& o) const {
+-		return error == o.error && (!present() || get() == o.get());
+-	}
+-	bool operator != (ErrorOr const& o) const {
+-		return !(*this == o);
+-	}
+-
+-	bool operator < (ErrorOr const& o) const {
+-		if (error != o.error) return error < o.error;
+-		if (!present()) return false;
+-		return get() < o.get();
+-	}
+-
+ 	bool isError() const { return error.code() != invalid_error_code; }
+ 	bool isError(int code) const { return error.code() == code; }
+ 	Error getError() const { ASSERT(isError()); return error; }