diff --git a/stp-gcc47.patch b/stp-gcc47.patch new file mode 100644 index 0000000..f522a00 --- /dev/null +++ b/stp-gcc47.patch @@ -0,0 +1,25 @@ +--- ./src/sat/mtl/Map.h.orig 2010-11-27 19:45:43.000000000 -0700 ++++ ./src/sat/mtl/Map.h 2012-01-10 16:30:55.918767977 -0700 +@@ -29,17 +29,17 @@ namespace Minisat { + // Default hash/equals functions + // + ++static inline uint32_t hash(uint32_t x){ return x; } ++static inline uint32_t hash(uint64_t x){ return (uint32_t)x; } ++static inline uint32_t hash(int32_t x) { return (uint32_t)x; } ++static inline uint32_t hash(int64_t x) { return (uint32_t)x; } ++ + template struct Hash { uint32_t operator()(const K& k) const { return hash(k); } }; + template struct Equal { bool operator()(const K& k1, const K& k2) const { return k1 == k2; } }; + + template struct DeepHash { uint32_t operator()(const K* k) const { return hash(*k); } }; + template struct DeepEqual { bool operator()(const K* k1, const K* k2) const { return *k1 == *k2; } }; + +-static inline uint32_t hash(uint32_t x){ return x; } +-static inline uint32_t hash(uint64_t x){ return (uint32_t)x; } +-static inline uint32_t hash(int32_t x) { return (uint32_t)x; } +-static inline uint32_t hash(int64_t x) { return (uint32_t)x; } +- + + //================================================================================================= + // Some primes diff --git a/stp.spec b/stp.spec index 5fed360..32fce1f 100644 --- a/stp.spec +++ b/stp.spec @@ -22,6 +22,9 @@ Source0: stp-%{version}.tar.xz # This patch has not yet been sent upstream. Fix a bunch of compiler warnings # that may indicate miscompiled code. Patch0: stp-warning.patch +# This patch has not yet been sent upstream. Deal with new C++ declaration +# ordering rules in GCC 4.7. +Patch1: stp-gcc47.patch BuildRequires: bison BuildRequires: boost-devel @@ -72,6 +75,7 @@ or automated prover). Provides a static library. %prep %setup -q %patch0 +%patch1 # Make sure nothing uses the shipped boost sources rm -fr src/boost