diff --git a/docs/getting-started/getting-started-darwin.md b/docs/getting-started/getting-started-darwin.md index 91be4f3..0a6c7fb 100644 --- a/docs/getting-started/getting-started-darwin.md +++ b/docs/getting-started/getting-started-darwin.md @@ -164,6 +164,9 @@ git clone https://github.com/facebook/rocksdb.git cd rocksdb git checkout v6.15.5 +# Apply the RocksDB patch in this repo to support newer versions of gcc +git apply rocksdb.patch + # Now install the required dependencies brew install snappy brew install lz4 diff --git a/docs/getting-started/rocksdb.patch b/docs/getting-started/rocksdb.patch new file mode 100644 index 0000000..75e507c --- /dev/null +++ b/docs/getting-started/rocksdb.patch @@ -0,0 +1,142 @@ +diff --git a/options/db_options.h b/options/db_options.h +index 42a58e256..96d475d5b 100644 +--- a/options/db_options.h ++++ b/options/db_options.h +@@ -98,7 +98,6 @@ struct ImmutableDBOptions { + struct MutableDBOptions { + static const char* kName() { return "MutableDBOptions"; } + MutableDBOptions(); +- explicit MutableDBOptions(const MutableDBOptions& options) = default; + explicit MutableDBOptions(const DBOptions& options); + + void Dump(Logger* log) const; +diff --git a/util/crc32c.cc b/util/crc32c.cc +index 959658099..80094239c 100644 +--- a/util/crc32c.cc ++++ b/util/crc32c.cc +@@ -41,7 +41,7 @@ + + #endif + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if defined(HAVE_ARM64_CRC) + bool pmull_runtime_flag = false; + #endif + +@@ -346,6 +346,9 @@ static inline void Slow_CRC32(uint64_t* l, uint8_t const **p) { + table0_[c >> 24]; + } + ++#if (!(defined(HAVE_POWER8) && defined(HAS_ALTIVEC))) && \ ++ (!defined(HAVE_ARM64_CRC)) || \ ++ defined(NO_THREEWAY_CRC32C) + static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { + #ifndef HAVE_SSE42 + Slow_CRC32(l, p); +@@ -359,6 +362,7 @@ static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) { + *p += 4; + #endif + } ++#endif + + template + uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) { +@@ -474,7 +478,7 @@ static bool isAltiVec() { + } + #endif + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if defined(HAVE_ARM64_CRC) + uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) { + return crc32c_arm64(crc, (const unsigned char *)buf, size); + } +@@ -494,7 +498,7 @@ std::string IsFastCrc32Supported() { + has_fast_crc = false; + arch = "PPC"; + #endif +-#elif defined(__linux__) && defined(HAVE_ARM64_CRC) ++#elif defined(HAVE_ARM64_CRC) + if (crc32c_runtime_check()) { + has_fast_crc = true; + arch = "Arm64"; +@@ -1227,7 +1231,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) { + static inline Function Choose_Extend() { + #ifdef HAVE_POWER8 + return isAltiVec() ? ExtendPPCImpl : ExtendImpl; +-#elif defined(__linux__) && defined(HAVE_ARM64_CRC) ++#elif defined(HAVE_ARM64_CRC) + if(crc32c_runtime_check()) { + pmull_runtime_flag = crc32c_pmull_runtime_check(); + return ExtendARMImpl; +diff --git a/util/crc32c_arm64.cc b/util/crc32c_arm64.cc +index 566810f4b..80dbf0528 100644 +--- a/util/crc32c_arm64.cc ++++ b/util/crc32c_arm64.cc +@@ -5,9 +5,11 @@ + + #include "util/crc32c_arm64.h" + +-#if defined(__linux__) && defined(HAVE_ARM64_CRC) ++#if defined(HAVE_ARM64_CRC) + ++#if defined(__linux__) + #include ++#endif + #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT + #include + #endif +@@ -65,8 +67,8 @@ __attribute__((__no_sanitize__("alignment"))) + __attribute__((__no_sanitize_undefined__)) + #endif + #endif +-uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, +- unsigned len) { ++uint32_t ++crc32c_arm64(uint32_t crc, unsigned char const *data, size_t len) { + const uint8_t *buf8; + const uint64_t *buf64 = (uint64_t *)data; + int length = (int)len; +diff --git a/util/crc32c_arm64.h b/util/crc32c_arm64.h +index a12354683..b16b1f3e0 100644 +--- a/util/crc32c_arm64.h ++++ b/util/crc32c_arm64.h +@@ -7,6 +7,7 @@ + #define UTIL_CRC32C_ARM64_H + + #include ++#include + + #if defined(__aarch64__) || defined(__AARCH64__) + +@@ -33,7 +34,8 @@ + PREF4X64L1(buffer, (PREF_OFFSET), 8) \ + PREF4X64L1(buffer, (PREF_OFFSET), 12) + +-extern uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, unsigned len); ++extern uint32_t crc32c_arm64(uint32_t crc, unsigned char const *data, ++ size_t len); + extern uint32_t crc32c_runtime_check(void); + extern bool crc32c_pmull_runtime_check(void); + +diff --git a/utilities/env_mirror.cc b/utilities/env_mirror.cc +index dbb5e8021..d420bbd00 100644 +--- a/utilities/env_mirror.cc ++++ b/utilities/env_mirror.cc +@@ -27,13 +27,17 @@ class SequentialFileMirror : public SequentialFile { + if (as == Status::OK()) { + char* bscratch = new char[n]; + Slice bslice; ++#ifndef NDEBUG + size_t off = 0; ++#endif + size_t left = aslice.size(); + while (left) { + Status bs = b_->Read(left, &bslice, bscratch); ++#ifndef NDEBUG + assert(as == bs); + assert(memcmp(bscratch, scratch + off, bslice.size()) == 0); + off += bslice.size(); ++#endif + left -= bslice.size(); + } + delete[] bscratch;