diff --git a/v8-3.14.5.10-gcc7.patch b/v8-3.14.5.10-gcc7.patch new file mode 100644 index 0000000..f929b4a --- /dev/null +++ b/v8-3.14.5.10-gcc7.patch @@ -0,0 +1,223 @@ +diff -up v8-3.14.5.10/src/arm/assembler-arm.cc.gcc7 v8-3.14.5.10/src/arm/assembler-arm.cc +diff -up v8-3.14.5.10/src/deoptimizer.cc.gcc7 v8-3.14.5.10/src/deoptimizer.cc +--- v8-3.14.5.10/src/deoptimizer.cc.gcc7 2012-10-22 09:09:53.000000000 -0400 ++++ v8-3.14.5.10/src/deoptimizer.cc 2017-02-28 16:55:25.553045035 -0500 +@@ -1141,7 +1141,7 @@ bool Deoptimizer::DoOsrTranslateCommand( + } + output->SetRegister(output_reg, static_cast(uint32_value)); + } +- ++ // intentional fallthrough + + case Translation::DOUBLE_REGISTER: { + // Abort OSR if we don't have a number. +diff -up v8-3.14.5.10/src/ia32/assembler-ia32.cc.gcc7 v8-3.14.5.10/src/ia32/assembler-ia32.cc +--- v8-3.14.5.10/src/ia32/assembler-ia32.cc.gcc7 2017-03-01 10:21:11.271775490 -0500 ++++ v8-3.14.5.10/src/ia32/assembler-ia32.cc 2017-03-01 10:21:44.242983779 -0500 +@@ -420,6 +420,7 @@ void Assembler::Nop(int bytes) { + switch (bytes) { + case 2: + EMIT(0x66); ++ // intentional fallthrough + case 1: + EMIT(0x90); + return; +@@ -436,6 +437,7 @@ void Assembler::Nop(int bytes) { + return; + case 6: + EMIT(0x66); ++ // intentional fallthrough + case 5: + EMIT(0xf); + EMIT(0x1f); +@@ -456,12 +458,15 @@ void Assembler::Nop(int bytes) { + case 11: + EMIT(0x66); + bytes--; ++ // intentional fallthrough + case 10: + EMIT(0x66); + bytes--; ++ // intentional fallthrough + case 9: + EMIT(0x66); + bytes--; ++ // intentional fallthrough + case 8: + EMIT(0xf); + EMIT(0x1f); +diff -up v8-3.14.5.10/src/ic.cc.gcc7 v8-3.14.5.10/src/ic.cc +--- v8-3.14.5.10/src/ic.cc.gcc7 2012-10-22 09:09:53.000000000 -0400 ++++ v8-3.14.5.10/src/ic.cc 2017-02-28 16:55:25.554045011 -0500 +@@ -1989,8 +1989,8 @@ void KeyedStoreIC::UpdateCaches(LookupRe + name, receiver, field_index, transition, strict_mode); + break; + } +- // fall through. + } ++ // intentional fallthrough + case NORMAL: + case CONSTANT_FUNCTION: + case CALLBACKS: +diff -up v8-3.14.5.10/src/objects.cc.gcc7 v8-3.14.5.10/src/objects.cc +--- v8-3.14.5.10/src/objects.cc.gcc7 2017-02-28 16:55:25.516045908 -0500 ++++ v8-3.14.5.10/src/objects.cc 2017-02-28 16:55:25.555044988 -0500 +@@ -10302,7 +10302,7 @@ void JSObject::GetElementsCapacityAndUsa + *used = Smi::cast(JSArray::cast(this)->length())->value(); + break; + } +- // Fall through if packing is not guaranteed. ++ // intentional fallthrough + case FAST_HOLEY_SMI_ELEMENTS: + case FAST_HOLEY_ELEMENTS: + backing_store = FixedArray::cast(backing_store_base); +@@ -10324,7 +10324,7 @@ void JSObject::GetElementsCapacityAndUsa + *used = Smi::cast(JSArray::cast(this)->length())->value(); + break; + } +- // Fall through if packing is not guaranteed. ++ // intentional fallthrough + case FAST_HOLEY_DOUBLE_ELEMENTS: { + FixedDoubleArray* elms = FixedDoubleArray::cast(elements()); + *capacity = elms->length(); +diff -up v8-3.14.5.10/src/objects.h.gcc7 v8-3.14.5.10/src/objects.h +--- v8-3.14.5.10/src/objects.h.gcc7 2017-02-28 16:55:25.517045885 -0500 ++++ v8-3.14.5.10/src/objects.h 2017-02-28 16:55:25.556044964 -0500 +@@ -2785,24 +2785,10 @@ class HashTable: public FixedArray { + USE_CUSTOM_MINIMUM_CAPACITY + }; + +- // Wrapper methods +- inline uint32_t Hash(Key key) { +- if (Shape::UsesSeed) { +- return Shape::SeededHash(key, +- GetHeap()->HashSeed()); +- } else { +- return Shape::Hash(key); +- } +- } +- +- inline uint32_t HashForObject(Key key, Object* object) { +- if (Shape::UsesSeed) { +- return Shape::SeededHashForObject(key, +- GetHeap()->HashSeed(), object); +- } else { +- return Shape::HashForObject(key, object); +- } +- } ++ // Wrapper methods. Defined in src/objects-inl.h ++ // to break a cycle with src/heap/heap.h. ++ inline uint32_t Hash(Key key); ++ inline uint32_t HashForObject(Key key, Object* object); + + // Returns the number of elements in the hash table. + int NumberOfElements() { +diff -up v8-3.14.5.10/src/objects-inl.h.gcc7 v8-3.14.5.10/src/objects-inl.h +--- v8-3.14.5.10/src/objects-inl.h.gcc7 2017-02-28 16:55:25.517045885 -0500 ++++ v8-3.14.5.10/src/objects-inl.h 2017-02-28 16:55:25.556044964 -0500 +@@ -52,6 +52,26 @@ + namespace v8 { + namespace internal { + ++template ++uint32_t HashTable::Hash(Key key) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHash(key, ++ GetHeap()->HashSeed()); ++ } else { ++ return Shape::Hash(key); ++ } ++} ++ ++template ++uint32_t HashTable::HashForObject(Key key, Object* object) { ++ if (Shape::UsesSeed) { ++ return Shape::SeededHashForObject(key, ++ GetHeap()->HashSeed(), object); ++ } else { ++ return Shape::HashForObject(key, object); ++ } ++} ++ + PropertyDetails::PropertyDetails(Smi* smi) { + value_ = smi->value(); + } +diff -up v8-3.14.5.10/src/parser.cc.gcc7 v8-3.14.5.10/src/parser.cc +--- v8-3.14.5.10/src/parser.cc.gcc7 2017-02-28 16:55:25.450047466 -0500 ++++ v8-3.14.5.10/src/parser.cc 2017-02-28 16:55:25.557044941 -0500 +@@ -3649,8 +3649,7 @@ Expression* Parser::ParsePrimaryExpressi + result = ParseV8Intrinsic(CHECK_OK); + break; + } +- // If we're not allowing special syntax we fall-through to the +- // default case. ++ // intentional fallthrough + + default: { + Token::Value tok = Next(); +@@ -5376,8 +5375,8 @@ RegExpTree* RegExpParser::ParseDisjuncti + if (ParseIntervalQuantifier(&dummy, &dummy)) { + ReportError(CStrVector("Nothing to repeat") CHECK_FAILED); + } +- // fallthrough + } ++ // intentional fallthrough + default: + builder->AddCharacter(current()); + Advance(); +diff -up v8-3.14.5.10/src/spaces.h.gcc7 v8-3.14.5.10/src/spaces.h +--- v8-3.14.5.10/src/spaces.h.gcc7 2012-10-22 09:09:53.000000000 -0400 ++++ v8-3.14.5.10/src/spaces.h 2017-02-28 16:55:25.557044941 -0500 +@@ -2613,15 +2613,15 @@ class PointerChunkIterator BASE_EMBEDDED + return old_pointer_iterator_.next(); + } + state_ = kMapState; +- // Fall through. + } ++ // intentional fallthrough + case kMapState: { + if (map_iterator_.has_next()) { + return map_iterator_.next(); + } + state_ = kLargeObjectState; +- // Fall through. + } ++ // intentional fallthrough + case kLargeObjectState: { + HeapObject* heap_object; + do { +diff -up v8-3.14.5.10/src/x64/assembler-x64.cc.gcc7 v8-3.14.5.10/src/x64/assembler-x64.cc +--- v8-3.14.5.10/src/x64/assembler-x64.cc.gcc7 2017-03-01 10:19:40.086088012 -0500 ++++ v8-3.14.5.10/src/x64/assembler-x64.cc 2017-03-01 10:20:51.859241627 -0500 +@@ -1800,6 +1800,7 @@ void Assembler::Nop(int n) { + switch (n) { + case 2: + emit(0x66); ++ // intentional fallthrough + case 1: + emit(0x90); + return; +@@ -1816,6 +1817,7 @@ void Assembler::Nop(int n) { + return; + case 6: + emit(0x66); ++ // intentional fallthrough + case 5: + emit(0x0f); + emit(0x1f); +@@ -1836,12 +1838,15 @@ void Assembler::Nop(int n) { + case 11: + emit(0x66); + n--; ++ // intentional fallthrough + case 10: + emit(0x66); + n--; ++ // intentional fallthrough + case 9: + emit(0x66); + n--; ++ // intentional fallthrough + case 8: + emit(0x0f); + emit(0x1f); diff --git a/v8-314.spec b/v8-314.spec index 7b8cafb..e47c106 100644 --- a/v8-314.spec +++ b/v8-314.spec @@ -25,7 +25,7 @@ Name: %{truename}-314 Version: %{somajor}.%{sominor}.%{sobuild}.%{sotiny} -Release: 4%{?dist} +Release: 5%{?dist} Summary: JavaScript Engine Group: System Environment/Libraries License: BSD @@ -147,6 +147,10 @@ Patch26: v8-3.14.5.10-CVE-2016-1669.patch # https://github.com/nodejs/node/commit/5a60e0d904c38c2bdb04785203b1b784967c870d Patch27: v8-3.14.5.10-report-builtins-by-name.patch +# Fix compile with gcc7 +# (thanks to Ben Noordhuis) +Patch28: v8-3.14.5.10-gcc7.patch + %description V8 is Google's open source JavaScript engine. V8 is written in C++ and is used in Google Chrome, the open source browser from Google. V8 implements ECMAScript @@ -199,6 +203,7 @@ Python libraries from v8. %patch25 -p1 -b .ppc %patch26 -p1 -b .CVE-2016-1669 %patch27 -p1 -b .builtinname +%patch28 -p1 -b .gcc7 # Do not need this lying about. rm -rf src/third_party/valgrind @@ -375,6 +380,9 @@ chmod -R -x %{buildroot}%{python_sitelib}/*.py* %endif %changelog +* Tue Feb 28 2017 Tom Callaway - 3.14.5.10-5 +- fix FTBFS (thanks to Ben Noordhuis) + * Sat Feb 11 2017 Fedora Release Engineering - 3.14.5.10-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild