nixpkgs/pkgs/servers/foundationdb/patches/gcc-fixes.patch
Raphael Borun Das Gupta 450de176cf foundationdb: fix build: use glibc's gettid()
to avoid build error due to conflicting declaration:

    flow/Profiler.actor.cpp: In function 'uint64_t gettid()':
    flow/Profiler.actor.cpp:56:17: error: ambiguating new declaration of 'uint64_t gettid()'
      FILE* f;
                     ^
    In file included from /nix/store/4wy9j24psf9ny4di3anjs7yk2fvfb0gq-glibc-2.31-dev/include/unistd.h:1170:0,
                     from ./flow/Platform.h:49,
                     from ./flow/flow.h:40,
                     from flow/Profiler.actor.cpp:39:
    /nix/store/4wy9j24psf9ny4di3anjs7yk2fvfb0gq-glibc-2.31-dev/include/bits/unistd_ext.h:34:16: note: old declaration '__pid_t gettid()'
     extern __pid_t gettid (void) __THROW;
                    ^~~~~~
2020-10-11 19:53:53 +02:00

139 lines
3.8 KiB
Diff

diff --git a/fdbrpc/ContinuousSample.h b/fdbrpc/ContinuousSample.h
index 54ff1b109..577c228ae 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 3ed8e6e98..fb4694750 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 cbfdc8fde..9993cee44 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 819c513c6..acfbfe7db 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 b485a8495..82541d439 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 69dac889a..62bda9edb 100644
--- a/flow/Platform.cpp
+++ b/flow/Platform.cpp
@@ -40,6 +40,7 @@
#include <algorithm>
#include <sys/types.h>
+#include <sys/sysmacros.h>
#include <time.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -623,7 +624,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/Profiler.actor.cpp b/flow/Profiler.actor.cpp
index 27af613e6..69f38c237 100644
--- a/flow/Profiler.actor.cpp
+++ b/flow/Profiler.actor.cpp
@@ -35,8 +35,6 @@
extern volatile int profilingEnabled;
-static uint64_t gettid() { return syscall(__NR_gettid); }
-
struct SignalClosure {
void (* func)(int, siginfo_t*, void*, void*);
void *userdata;
diff --git a/flow/TDMetric.actor.h b/flow/TDMetric.actor.h
index 5421b83b5..711a96093 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 0c220afae..f685fbc63 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; }