diff --git a/SOURCES/icu.gn b/SOURCES/icu.gn new file mode 100644 index 0000000..f3734b7 --- /dev/null +++ b/SOURCES/icu.gn @@ -0,0 +1,235 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("//build/config/linux/pkg_config.gni") +import("//build/shim_headers.gni") + +group("icu") { + public_deps = [ + ":icui18n", + ":icuuc", + ] +} + +config("icu_config") { + defines = [ + "USING_SYSTEM_ICU=1", + "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", + ] +} + +pkg_config("system_icui18n") { + packages = [ "icu-i18n" ] +} + +pkg_config("system_icuuc") { + packages = [ "icu-uc" ] +} + +source_set("icui18n") { + deps = [ + ":icui18n_shim", + ] + public_configs = [ + ":icu_config", + ":system_icui18n", + ] +} + +source_set("icuuc") { + deps = [ + ":icuuc_shim", + ] + public_configs = [ + ":icu_config", + ":system_icuuc", + ] +} + +shim_headers("icui18n_shim") { + root_path = "source/i18n" + headers = [ + # This list can easily be updated using the command below: + # find third_party/icu/source/i18n/unicode \ + # -iname '*.h' -printf '"%p",\n' | \ + # sed -e 's|third_party/icu/i18n/common/||' | sort -u + "unicode/alphaindex.h", + "unicode/basictz.h", + "unicode/calendar.h", + "unicode/choicfmt.h", + "unicode/coleitr.h", + "unicode/coll.h", + "unicode/compactdecimalformat.h", + "unicode/curramt.h", + "unicode/currpinf.h", + "unicode/currunit.h", + "unicode/datefmt.h", + "unicode/dcfmtsym.h", + "unicode/decimfmt.h", + "unicode/dtfmtsym.h", + "unicode/dtitvfmt.h", + "unicode/dtitvinf.h", + "unicode/dtptngen.h", + "unicode/dtrule.h", + "unicode/fieldpos.h", + "unicode/fmtable.h", + "unicode/format.h", + "unicode/fpositer.h", + "unicode/gender.h", + "unicode/gregocal.h", + "unicode/locdspnm.h", + "unicode/measfmt.h", + "unicode/measunit.h", + "unicode/measure.h", + "unicode/msgfmt.h", + "unicode/numfmt.h", + "unicode/numsys.h", + "unicode/plurfmt.h", + "unicode/plurrule.h", + "unicode/rbnf.h", + "unicode/rbtz.h", + "unicode/regex.h", + "unicode/region.h", + "unicode/reldatefmt.h", + "unicode/scientificnumberformatter.h", + "unicode/search.h", + "unicode/selfmt.h", + "unicode/simpletz.h", + "unicode/smpdtfmt.h", + "unicode/sortkey.h", + "unicode/stsearch.h", + "unicode/tblcoll.h", + "unicode/timezone.h", + "unicode/tmunit.h", + "unicode/tmutamt.h", + "unicode/tmutfmt.h", + "unicode/translit.h", + "unicode/tzfmt.h", + "unicode/tznames.h", + "unicode/tzrule.h", + "unicode/tztrans.h", + "unicode/ucal.h", + "unicode/ucol.h", + "unicode/ucoleitr.h", + "unicode/ucsdet.h", + "unicode/ucurr.h", + "unicode/udat.h", + "unicode/udateintervalformat.h", + "unicode/udatpg.h", + "unicode/udisplaycontext.h", + "unicode/ufieldpositer.h", + "unicode/uformattable.h", + "unicode/ugender.h", + "unicode/uldnames.h", + "unicode/ulocdata.h", + "unicode/umsg.h", + "unicode/unirepl.h", + "unicode/unum.h", + "unicode/unumsys.h", + "unicode/upluralrules.h", + "unicode/uregex.h", + "unicode/uregion.h", + "unicode/usearch.h", + "unicode/uspoof.h", + "unicode/utmscale.h", + "unicode/utrans.h", + "unicode/vtzone.h", + ] +} + +shim_headers("icuuc_shim") { + root_path = "source/common" + headers = [ + # This list can easily be updated using the command below: + # find third_party/icu/source/common/unicode \ + # -iname '*.h' -printf '"%p",\n' | \ + # sed -e 's|third_party/icu/source/common/||' | sort -u + "unicode/appendable.h", + "unicode/brkiter.h", + "unicode/bytestream.h", + "unicode/bytestrie.h", + "unicode/bytestriebuilder.h", + "unicode/caniter.h", + "unicode/chariter.h", + "unicode/dbbi.h", + "unicode/docmain.h", + "unicode/dtintrv.h", + "unicode/enumset.h", + "unicode/errorcode.h", + "unicode/filteredbrk.h", + "unicode/icudataver.h", + "unicode/icuplug.h", + "unicode/idna.h", + "unicode/listformatter.h", + "unicode/localpointer.h", + "unicode/locid.h", + "unicode/messagepattern.h", + "unicode/normalizer2.h", + "unicode/normlzr.h", + "unicode/parseerr.h", + "unicode/parsepos.h", + "unicode/platform.h", + "unicode/ptypes.h", + "unicode/putil.h", + "unicode/rbbi.h", + "unicode/rep.h", + "unicode/resbund.h", + "unicode/schriter.h", + "unicode/std_string.h", + "unicode/strenum.h", + "unicode/stringpiece.h", + "unicode/stringtriebuilder.h", + "unicode/symtable.h", + "unicode/ubidi.h", + "unicode/ubrk.h", + "unicode/ucasemap.h", + "unicode/ucat.h", + "unicode/uchar.h", + "unicode/ucharstrie.h", + "unicode/ucharstriebuilder.h", + "unicode/uchriter.h", + "unicode/uclean.h", + "unicode/ucnv.h", + "unicode/ucnv_cb.h", + "unicode/ucnv_err.h", + "unicode/ucnvsel.h", + "unicode/uconfig.h", + "unicode/udata.h", + "unicode/uenum.h", + "unicode/uidna.h", + "unicode/uiter.h", + "unicode/ulistformatter.h", + "unicode/uloc.h", + "unicode/umachine.h", + "unicode/umisc.h", + "unicode/unifilt.h", + "unicode/unifunct.h", + "unicode/unimatch.h", + "unicode/uniset.h", + "unicode/unistr.h", + "unicode/unorm.h", + "unicode/unorm2.h", + "unicode/uobject.h", + "unicode/urename.h", + "unicode/urep.h", + "unicode/ures.h", + "unicode/uscript.h", + "unicode/uset.h", + "unicode/usetiter.h", + "unicode/ushape.h", + "unicode/usprep.h", + "unicode/ustring.h", + "unicode/ustringtrie.h", + "unicode/utext.h", + "unicode/utf.h", + "unicode/utf16.h", + "unicode/utf32.h", + "unicode/utf8.h", + "unicode/utf_old.h", + "unicode/utrace.h", + "unicode/utypes.h", + "unicode/uvernum.h", + "unicode/uversion.h", + ] +} diff --git a/SOURCES/v8-4.10.91-system_icu.patch b/SOURCES/v8-4.10.91-system_icu.patch new file mode 100644 index 0000000..9ff86c0 --- /dev/null +++ b/SOURCES/v8-4.10.91-system_icu.patch @@ -0,0 +1,14 @@ +diff -up v8-4.10.91/Makefile.system_icu v8-4.10.91/Makefile +--- v8-4.10.91/Makefile.system_icu 2016-01-27 17:20:20.554136527 -0500 ++++ v8-4.10.91/Makefile 2016-01-27 17:21:03.377907390 -0500 +@@ -44,6 +44,10 @@ endif + ifdef component + GYPFLAGS += -Dcomponent=$(component) + endif ++# system_icu=on ++ifeq ($(system_icu), on) ++ GYPFLAGS += -Duse_system_icu=1 ++endif + # disassembler=on + ifeq ($(disassembler), on) + GYPFLAGS += -Dv8_enable_disassembler=1 diff --git a/SOURCES/v8-5.2.197-readdir-fix.patch b/SOURCES/v8-5.2.197-readdir-fix.patch new file mode 100644 index 0000000..b133d59 --- /dev/null +++ b/SOURCES/v8-5.2.197-readdir-fix.patch @@ -0,0 +1,27 @@ +diff -up v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc.readdir v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc +--- v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc.readdir 2016-05-02 09:47:32.000000000 -0400 ++++ v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc 2016-05-02 15:42:49.961046560 -0400 +@@ -20,6 +20,8 @@ + #include + #endif + ++#include ++ + using v8::internal::interpreter::BytecodeExpectationsPrinter; + + #define REPORT_ERROR(MESSAGE) (((std::cerr << "ERROR: ") << MESSAGE) << '\n') +@@ -174,10 +176,12 @@ bool CollectGoldenFiles(std::vectord_name, ".golden")) { + std::string golden_filename(kGoldenFilesPath); + golden_filename += entry->d_name; diff --git a/SOURCES/v8-5.2.258-bundled-binutils.patch b/SOURCES/v8-5.2.258-bundled-binutils.patch new file mode 100644 index 0000000..e80e5f1 --- /dev/null +++ b/SOURCES/v8-5.2.258-bundled-binutils.patch @@ -0,0 +1,16 @@ +diff -up v8-5.2.258/Makefile.bb v8-5.2.258/Makefile +--- v8-5.2.258/Makefile.bb 2016-10-10 14:57:17.275968725 -0400 ++++ v8-5.2.258/Makefile 2016-10-10 14:58:37.012406994 -0400 +@@ -37,6 +37,12 @@ NACL_SDK_ROOT ?= + + # Special build flags. Use them like this: "make library=shared" + ++# bundledbinutils=off ++ifeq ($(bundledbinutils), off) ++ GYPFLAGS += -Dlinux_use_bundled_binutils=0 ++else ++ GYPFLAGS += -Dlinux_use_bundled_binutils=1 ++endif + # library=shared || component=shared_library + ifeq ($(library), shared) + GYPFLAGS += -Dcomponent=shared_library diff --git a/SOURCES/v8-5.2.258-gcc7.patch b/SOURCES/v8-5.2.258-gcc7.patch new file mode 100644 index 0000000..162a9c4 --- /dev/null +++ b/SOURCES/v8-5.2.258-gcc7.patch @@ -0,0 +1,119 @@ +diff -up v8-5.2.258/samples/shell.cc.gcc7 v8-5.2.258/samples/shell.cc +--- v8-5.2.258/samples/shell.cc.gcc7 2017-02-28 15:33:38.931424708 -0500 ++++ v8-5.2.258/samples/shell.cc 2017-02-28 15:34:00.759853299 -0500 +@@ -361,6 +361,8 @@ bool ExecuteString(v8::Isolate* isolate, + } else { + v8::Local result; + if (!script->Run(context).ToLocal(&result)) { ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wgnu" + assert(try_catch.HasCaught()); + // Print errors that happened during execution. + if (report_exceptions) +@@ -368,6 +370,7 @@ bool ExecuteString(v8::Isolate* isolate, + return false; + } else { + assert(!try_catch.HasCaught()); ++#pragma GCC diagnostic pop + if (print_result && !result->IsUndefined()) { + // If all went well and the result wasn't undefined then print + // the returned value. +diff -up v8-5.2.258/src/crankshaft/lithium.cc.gcc7 v8-5.2.258/src/crankshaft/lithium.cc +--- v8-5.2.258/src/crankshaft/lithium.cc.gcc7 2016-05-09 10:28:43.000000000 -0400 ++++ v8-5.2.258/src/crankshaft/lithium.cc 2017-02-28 14:42:17.188361709 -0500 +@@ -128,11 +128,6 @@ void LOperand::PrintTo(StringStream* str + + + template +-LSubKindOperand* +-LSubKindOperand::cache = NULL; +- +- +-template + void LSubKindOperand::SetUpCache() { + if (cache) return; + cache = new LSubKindOperand[kNumCachedOperands]; +diff -up v8-5.2.258/src/crankshaft/lithium.h.gcc7 v8-5.2.258/src/crankshaft/lithium.h +--- v8-5.2.258/src/crankshaft/lithium.h.gcc7 2016-05-09 10:28:43.000000000 -0400 ++++ v8-5.2.258/src/crankshaft/lithium.h 2017-02-28 14:42:17.188361709 -0500 +@@ -338,6 +338,9 @@ class LSubKindOperand final : public LOp + explicit LSubKindOperand(int index) : LOperand(kOperandKind, index) { } + }; + ++template ++LSubKindOperand* ++LSubKindOperand::cache = NULL; + + #define LITHIUM_TYPEDEF_SUBKIND_OPERAND_CLASS(name, type, number) \ + typedef LSubKindOperand L##name; +diff -up v8-5.2.258/src/objects-body-descriptors.h.gcc7 v8-5.2.258/src/objects-body-descriptors.h +--- v8-5.2.258/src/objects-body-descriptors.h.gcc7 2016-05-09 10:28:43.000000000 -0400 ++++ v8-5.2.258/src/objects-body-descriptors.h 2017-02-28 14:42:17.189361685 -0500 +@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public + + template + static inline void IterateBody(HeapObject* obj, int object_size) { +- IterateBody(obj); ++ IterateBody(obj); + } + }; + +diff -up v8-5.2.258/src/objects.h.gcc7 v8-5.2.258/src/objects.h +--- v8-5.2.258/src/objects.h.gcc7 2016-05-09 10:28:43.000000000 -0400 ++++ v8-5.2.258/src/objects.h 2017-02-28 14:42:17.190361661 -0500 +@@ -3182,22 +3182,10 @@ class HashTableBase : public FixedArray + template + class HashTable : public HashTableBase { + public: +- // 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 a new HashTable object. + MUST_USE_RESULT static Handle New( +diff -up v8-5.2.258/src/objects-inl.h.gcc7 v8-5.2.258/src/objects-inl.h +--- v8-5.2.258/src/objects-inl.h.gcc7 2016-05-09 10:28:43.000000000 -0400 ++++ v8-5.2.258/src/objects-inl.h 2017-02-28 14:42:17.191361638 -0500 +@@ -35,6 +35,25 @@ + 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 --git a/SOURCES/v8-5.2.258-ppc64.patch b/SOURCES/v8-5.2.258-ppc64.patch new file mode 100644 index 0000000..d851803 --- /dev/null +++ b/SOURCES/v8-5.2.258-ppc64.patch @@ -0,0 +1,21 @@ +diff -up v8-5.2.258/gypfiles/standalone.gypi.ppcfix v8-5.2.258/gypfiles/standalone.gypi +--- v8-5.2.258/gypfiles/standalone.gypi.ppcfix 2017-03-01 11:15:17.516268618 -0500 ++++ v8-5.2.258/gypfiles/standalone.gypi 2017-03-01 11:16:34.750282604 -0500 +@@ -225,7 +225,7 @@ + }, { + 'v8_enable_gdbjit%': 0, + }], +- ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64") and \ ++ ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64" or target_arch=="ppc64le") and \ + (v8_target_arch!="x87" and v8_target_arch!="x32")', { + 'clang%': 1, + }, { +@@ -735,7 +735,7 @@ + or v8_target_arch=="mips64el")', { + 'cflags': [ '-Wshorten-64-to-32' ], + }], +- [ 'host_arch=="ppc64" and OS!="aix"', { ++ [ 'host_arch=="ppc64le" and OS!="aix" and clang==0', { + 'cflags': [ '-mminimal-toc' ], + }], + [ 'visibility=="hidden" and v8_enable_backtrace==0', { diff --git a/SOURCES/v8-6.2.91-gcc8-gn-fabi11.patch b/SOURCES/v8-6.2.91-gcc8-gn-fabi11.patch new file mode 100644 index 0000000..3a7ca51 --- /dev/null +++ b/SOURCES/v8-6.2.91-gcc8-gn-fabi11.patch @@ -0,0 +1,15 @@ +diff -up v8-6.2.91/tools/gn/bootstrap/bootstrap.py.fabi11 v8-6.2.91/tools/gn/bootstrap/bootstrap.py +--- v8-6.2.91/tools/gn/bootstrap/bootstrap.py.fabi11 2018-02-19 17:11:22.650679128 -0500 ++++ v8-6.2.91/tools/gn/bootstrap/bootstrap.py 2018-02-19 17:11:46.579128407 -0500 +@@ -314,6 +314,11 @@ def write_gn_ninja(path, root_gen_dir, o + cflags = os.environ.get('CFLAGS', '').split() + cflags_cc = os.environ.get('CXXFLAGS', '').split() + ldflags = os.environ.get('LDFLAGS', '').split() ++ ++ # Work around GCC8 bug gcc#84286 ++ cflags.extend(['-fabi-version=11']) ++ cflags_cc.extend(['-fabi-version=11']) ++ + include_dirs = [root_gen_dir, SRC_ROOT] + libs = [] + diff --git a/SOURCES/v8-6.2.91-nolambda.patch b/SOURCES/v8-6.2.91-nolambda.patch new file mode 100644 index 0000000..6b7ba48 --- /dev/null +++ b/SOURCES/v8-6.2.91-nolambda.patch @@ -0,0 +1,12 @@ +diff -up v8-6.2.91/build/config/compiler/BUILD.gn.nolambda v8-6.2.91/build/config/compiler/BUILD.gn +--- v8-6.2.91/build/config/compiler/BUILD.gn.nolambda 2017-08-01 14:28:53.499913889 -0400 ++++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-01 14:29:03.242607676 -0400 +@@ -1171,7 +1171,7 @@ config("default_warnings") { + "-Wno-address-of-packed-member", + + # TODO(hans): https://crbug.com/681136 +- "-Wno-unused-lambda-capture", ++ # "-Wno-unused-lambda-capture", + + # TODO(thakis ): https://crbug.com/683349 + "-Wno-user-defined-warnings", diff --git a/SOURCES/v8-6.2.91-oldclang-flags.patch b/SOURCES/v8-6.2.91-oldclang-flags.patch new file mode 100644 index 0000000..ed61d57 --- /dev/null +++ b/SOURCES/v8-6.2.91-oldclang-flags.patch @@ -0,0 +1,19 @@ +diff -up v8-6.2.91/build/config/compiler/BUILD.gn.oldclang v8-6.2.91/build/config/compiler/BUILD.gn +--- v8-6.2.91/build/config/compiler/BUILD.gn.oldclang 2017-08-31 21:05:13.342875120 -0400 ++++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-31 21:05:40.092124090 -0400 +@@ -1168,13 +1168,13 @@ config("default_warnings") { + "-Wno-nonportable-include-path", + + # TODO(hans): https://crbug.com/637306 +- "-Wno-address-of-packed-member", ++ # "-Wno-address-of-packed-member", + + # TODO(hans): https://crbug.com/681136 + # "-Wno-unused-lambda-capture", + + # TODO(thakis ): https://crbug.com/683349 +- "-Wno-user-defined-warnings", ++ # "-Wno-user-defined-warnings", + ] + } else if (use_xcode_clang && xcode_version_int >= 830) { + # This is necessary to allow a progressive transition from using xcode 8.0 diff --git a/SOURCES/v8-6.2.91-sover.patch b/SOURCES/v8-6.2.91-sover.patch new file mode 100644 index 0000000..1bef787 --- /dev/null +++ b/SOURCES/v8-6.2.91-sover.patch @@ -0,0 +1,28 @@ +diff -up v8-6.2.91/BUILD.gn.sover v8-6.2.91/BUILD.gn +--- v8-6.2.91/BUILD.gn.sover 2017-07-31 11:24:31.000000000 -0400 ++++ v8-6.2.91/BUILD.gn 2017-08-02 12:10:57.825931436 -0400 +@@ -2422,6 +2422,7 @@ v8_component("v8_libbase") { + + if (is_component_build) { + defines = [ "BUILDING_V8_BASE_SHARED" ] ++ output_extension = "so.6" + } + + if (is_posix) { +@@ -2532,6 +2533,7 @@ v8_component("v8_libplatform") { + + if (is_component_build) { + defines = [ "BUILDING_V8_PLATFORM_SHARED" ] ++ output_extension = "so.6" + } + + public_configs = [ ":libplatform_config" ] +@@ -2682,6 +2684,8 @@ if (is_component_build) { + "src/v8dll-main.cc", + ] + ++ output_extension = "so.6" ++ + public_deps = [ + ":v8_base", + ":v8_maybe_snapshot", diff --git a/SOURCES/v8-6.7.17-fix-gcc-unwind-header.patch b/SOURCES/v8-6.7.17-fix-gcc-unwind-header.patch new file mode 100644 index 0000000..6bd2a0c --- /dev/null +++ b/SOURCES/v8-6.7.17-fix-gcc-unwind-header.patch @@ -0,0 +1,236 @@ +diff -Nru v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_default_handlers.cpp v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_default_handlers.cpp +--- v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_default_handlers.cpp 2018-03-06 14:20:54.000000000 -0500 ++++ v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_default_handlers.cpp 2018-05-07 11:01:44.464845299 -0400 +@@ -36,13 +36,10 @@ + { + _Unwind_Exception* unwind_exception = + reinterpret_cast<_Unwind_Exception*>(exception_header + 1) - 1; +- bool native_exception = +- (unwind_exception->exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); +- if (native_exception) ++ if (__isOurExceptionClass(unwind_exception)) + { + void* thrown_object = +- unwind_exception->exception_class == kOurDependentExceptionClass ? ++ __getExceptionClass(unwind_exception) == kOurDependentExceptionClass ? + ((__cxa_dependent_exception*)exception_header)->primaryException : + exception_header + 1; + const __shim_type_info* thrown_type = +diff -Nru v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_exception.cpp v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_exception.cpp +--- v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_exception.cpp 2018-03-06 14:20:54.000000000 -0500 ++++ v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_exception.cpp 2018-05-07 11:01:44.472845276 -0400 +@@ -78,22 +78,37 @@ + alignof(__cxa_exception)); + } + +-static void setExceptionClass(_Unwind_Exception* unwind_exception) { +- unwind_exception->exception_class = kOurExceptionClass; ++void __setExceptionClass(_Unwind_Exception* unwind_exception, uint64_t newValue) { ++ ::memcpy(&unwind_exception->exception_class, &newValue, sizeof(newValue)); ++ } ++ ++ ++static void setOurExceptionClass(_Unwind_Exception* unwind_exception) { ++ __setExceptionClass(unwind_exception, kOurExceptionClass); + } + + static void setDependentExceptionClass(_Unwind_Exception* unwind_exception) { +- unwind_exception->exception_class = kOurDependentExceptionClass; ++ __setExceptionClass(unwind_exception, kOurDependentExceptionClass); + } + + // Is it one of ours? +-static bool isOurExceptionClass(const _Unwind_Exception* unwind_exception) { +- return (unwind_exception->exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); ++uint64_t __getExceptionClass(const _Unwind_Exception* unwind_exception) { ++// On x86 and some ARM unwinders, unwind_exception->exception_class is ++// a uint64_t. On other ARM unwinders, it is a char[8] ++// See: http://infocenter.arm.com/help/topic/com.arm.doc.ihi0038b/IHI0038B_ehabi.pdf ++// So we just copy it into a uint64_t to be sure. ++ uint64_t exClass; ++ ::memcpy(&exClass, &unwind_exception->exception_class, sizeof(exClass)); ++ return exClass; ++} ++ ++bool __isOurExceptionClass(const _Unwind_Exception* unwind_exception) { ++ return (__getExceptionClass(unwind_exception) & get_vendor_and_language) == ++ (kOurExceptionClass & get_vendor_and_language); + } + + static bool isDependentException(_Unwind_Exception* unwind_exception) { +- return (unwind_exception->exception_class & 0xFF) == 0x01; ++ return (__getExceptionClass(unwind_exception) & 0xFF) == 0x01; + } + + // This does not need to be atomic +@@ -248,7 +263,7 @@ + exception_header->terminateHandler = std::get_terminate(); + exception_header->exceptionType = tinfo; + exception_header->exceptionDestructor = dest; +- setExceptionClass(&exception_header->unwindHeader); ++ setOurExceptionClass(&exception_header->unwindHeader); + exception_header->referenceCount = 1; // This is a newly allocated exception, no need for thread safety. + globals->uncaughtExceptions += 1; // Not atomically, since globals are thread-local + +@@ -299,7 +314,7 @@ + __cxa_exception* exception_header = + cxa_exception_from_exception_unwind_exception(unwind_exception); + +- if (isOurExceptionClass(unwind_exception)) ++ if (__isOurExceptionClass(unwind_exception)) + { + if (0 == exception_header->propagationCount) + { +@@ -342,7 +357,7 @@ + std::terminate(); + } + +- if (isOurExceptionClass(&exception_header->unwindHeader)) ++ if (__isOurExceptionClass(&exception_header->unwindHeader)) + { + --exception_header->propagationCount; + if (0 == exception_header->propagationCount) +@@ -407,7 +422,7 @@ + __cxa_begin_catch(void* unwind_arg) throw() + { + _Unwind_Exception* unwind_exception = static_cast<_Unwind_Exception*>(unwind_arg); +- bool native_exception = isOurExceptionClass(unwind_exception); ++ bool native_exception = __isOurExceptionClass(unwind_exception); + __cxa_eh_globals* globals = __cxa_get_globals(); + // exception_header is a hackish offset from a foreign exception, but it + // works as long as we're careful not to try to access any __cxa_exception +@@ -484,7 +499,7 @@ + // nothing more to be done. Do nothing! + if (NULL != exception_header) + { +- bool native_exception = isOurExceptionClass(&exception_header->unwindHeader); ++ bool native_exception = __isOurExceptionClass(&exception_header->unwindHeader); + if (native_exception) + { + // This is a native exception +@@ -549,7 +564,7 @@ + __cxa_exception *exception_header = globals->caughtExceptions; + if (NULL == exception_header) + return NULL; // No current exception +- if (!isOurExceptionClass(&exception_header->unwindHeader)) ++ if (!__isOurExceptionClass(&exception_header->unwindHeader)) + return NULL; + return exception_header->exceptionType; + } +@@ -571,7 +586,7 @@ + __cxa_exception* exception_header = globals->caughtExceptions; + if (NULL == exception_header) + std::terminate(); // throw; called outside of a exception handler +- bool native_exception = isOurExceptionClass(&exception_header->unwindHeader); ++ bool native_exception = __isOurExceptionClass(&exception_header->unwindHeader); + if (native_exception) + { + // Mark the exception as being rethrown (reverse the effects of __cxa_begin_catch) +@@ -660,7 +675,7 @@ + __cxa_exception* exception_header = globals->caughtExceptions; + if (NULL == exception_header) + return NULL; // No current exception +- if (!isOurExceptionClass(&exception_header->unwindHeader)) ++ if (!__isOurExceptionClass(&exception_header->unwindHeader)) + return NULL; // Can't capture a foreign exception (no way to refcount it) + if (isDependentException(&exception_header->unwindHeader)) { + __cxa_dependent_exception* dep_exception_header = +diff -Nru v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_exception.hpp v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_exception.hpp +--- v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_exception.hpp 2018-03-06 14:20:54.000000000 -0500 ++++ v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_exception.hpp 2018-05-07 13:09:05.371652989 -0400 +@@ -24,6 +24,17 @@ + static const uint64_t kOurDependentExceptionClass = 0x434C4E47432B2B01; // CLNGC++\1 + static const uint64_t get_vendor_and_language = 0xFFFFFFFFFFFFFF00; // mask for CLNGC++ + ++uint64_t __getExceptionClass (const _Unwind_Exception*); ++void __setExceptionClass ( _Unwind_Exception*, uint64_t); ++bool __isOurExceptionClass(const _Unwind_Exception*); ++ ++#if defined(__arm__) && defined(__GNUC__) ++// missing values from _Unwind_Reason_Code enum ++#define _URC_FATAL_PHASE2_ERROR ((_Unwind_Reason_Code)2) ++#define _URC_FATAL_PHASE1_ERROR ((_Unwind_Reason_Code)3) ++#define _URC_NORMAL_STOP ((_Unwind_Reason_Code)4) ++#endif ++ + struct _LIBCXXABI_HIDDEN __cxa_exception { + #if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI) + // This is a new field to support C++ 0x exception_ptr. +diff -Nru v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_handlers.cpp v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_handlers.cpp +--- v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_handlers.cpp 2018-03-06 14:20:54.000000000 -0500 ++++ v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_handlers.cpp 2018-05-07 11:01:44.474845270 -0400 +@@ -89,10 +89,7 @@ + { + _Unwind_Exception* unwind_exception = + reinterpret_cast<_Unwind_Exception*>(exception_header + 1) - 1; +- bool native_exception = +- (unwind_exception->exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); +- if (native_exception) ++ if (__isOurExceptionClass(unwind_exception)) + __terminate(exception_header->terminateHandler); + } + } +diff -Nru v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_personality.cpp v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_personality.cpp +--- v8-6.7.17.orig/buildtools/third_party/libc++abi/trunk/src/cxa_personality.cpp 2018-03-06 14:20:54.000000000 -0500 ++++ v8-6.7.17/buildtools/third_party/libc++abi/trunk/src/cxa_personality.cpp 2018-05-07 15:08:40.666231128 -0400 +@@ -492,7 +492,7 @@ + // Even for foreign exceptions, the exception object is *probably* at unwind_exception + 1 + // Regardless, this library is prohibited from touching a foreign exception + void* adjustedPtr = unwind_exception + 1; +- if (unwind_exception->exception_class == kOurDependentExceptionClass) ++ if (__getExceptionClass(unwind_exception) == kOurDependentExceptionClass) + adjustedPtr = ((__cxa_dependent_exception*)adjustedPtr - 1)->primaryException; + return adjustedPtr; + } +@@ -1073,8 +1073,7 @@ + if (unwind_exception == 0 || context == 0) + return _URC_FATAL_PHASE1_ERROR; + +- bool native_exception = (unwind_exception->exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); ++ bool native_exception = __isOurExceptionClass(unwind_exception); + + #if !defined(LIBCXXABI_USE_LLVM_UNWINDER) + // Copy the address of _Unwind_Control_Block to r12 so that +@@ -1085,7 +1084,7 @@ + + // Check the undocumented force unwinding behavior + bool is_force_unwinding = state & _US_FORCE_UNWIND; +- state &= ~_US_FORCE_UNWIND; ++ state = (_Unwind_State)(state & ~_US_FORCE_UNWIND); + + scan_results results; + switch (state) { +@@ -1178,9 +1177,7 @@ + if (unwind_exception == 0) + call_terminate(false, unwind_exception); + __cxa_begin_catch(unwind_exception); +- bool native_old_exception = +- (unwind_exception->exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); ++ bool native_old_exception = __isOurExceptionClass(unwind_exception); + std::unexpected_handler u_handler; + std::terminate_handler t_handler; + __cxa_exception* old_exception_header = 0; +@@ -1242,16 +1239,14 @@ + if (new_exception_header == 0) + // This shouldn't be able to happen! + std::__terminate(t_handler); +- bool native_new_exception = +- (new_exception_header->unwindHeader.exception_class & get_vendor_and_language) == +- (kOurExceptionClass & get_vendor_and_language); ++ bool native_new_exception = __isOurExceptionClass(&new_exception_header->unwindHeader); + void* adjustedPtr; + if (native_new_exception && (new_exception_header != old_exception_header)) + { + const __shim_type_info* excpType = + static_cast(new_exception_header->exceptionType); + adjustedPtr = +- new_exception_header->unwindHeader.exception_class == kOurDependentExceptionClass ? ++ __getExceptionClass(&new_exception_header->unwindHeader) == kOurDependentExceptionClass ? + ((__cxa_dependent_exception*)new_exception_header)->primaryException : + new_exception_header + 1; + if (!exception_spec_can_catch(ttypeIndex, classInfo, ttypeEncoding, diff --git a/SOURCES/v8-6.7.17-fixme.patch b/SOURCES/v8-6.7.17-fixme.patch new file mode 100644 index 0000000..0a0d835 --- /dev/null +++ b/SOURCES/v8-6.7.17-fixme.patch @@ -0,0 +1,335 @@ +diff -up v8-6.7.17/build/config/compiler/BUILD.gn.fixme v8-6.7.17/build/config/compiler/BUILD.gn +--- v8-6.7.17/build/config/compiler/BUILD.gn.fixme 2018-03-14 11:47:13.723221338 -0400 ++++ v8-6.7.17/build/config/compiler/BUILD.gn 2018-03-14 11:47:13.712221590 -0400 +@@ -185,7 +185,7 @@ config("compiler") { + ldflags = [] + defines = [] + configs = [] +- inputs = [] ++ # inputs = [] + + # System-specific flags. If your compiler flags apply to one of the + # categories here, add it to the associated file to keep this shared config +@@ -1278,6 +1278,9 @@ config("default_warnings") { + # [1] https://gcc.gnu.org/gcc-6/porting_to.html#this-cannot-be-null + # [2] https://crbug.com/784492#c13 + cflags += [ "-fno-delete-null-pointer-checks" ] ++ ++ # workaround tests ++ cflags += [ "-Wno-error=subobject-linkage" ] + } + } + +diff -up v8-6.7.17/src/base/file-utils.cc.fixme v8-6.7.17/src/base/file-utils.cc +--- v8-6.7.17/src/base/file-utils.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/base/file-utils.cc 2018-03-14 11:47:12.586247445 -0400 +@@ -25,7 +25,7 @@ char* RelativePath(char** buffer, const + reinterpret_cast(calloc(path_separator + name_length + 2, 1)); + *buffer[0] = '\0'; + strncat(*buffer, exec_path, path_separator + 1); +- strncat(*buffer, name, name_length); ++ strncat(*buffer, name, name_length + 1); + } else { + *buffer = strdup(name); + } +diff -up v8-6.7.17/src/base/macros.h.fixme v8-6.7.17/src/base/macros.h +--- v8-6.7.17/src/base/macros.h.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/base/macros.h 2018-03-14 11:47:12.587247422 -0400 +@@ -102,7 +102,7 @@ V8_INLINE Dest bit_cast(Source const& so + static_assert(sizeof(Dest) == sizeof(Source), + "source and dest must be same size"); + Dest dest; +- memcpy(&dest, &source, sizeof(dest)); ++ memcpy(static_cast(&dest), &source, sizeof(dest)); + return dest; + } + +@@ -387,10 +387,10 @@ bool is_inbounds(float_t v) { + static_cast(std::numeric_limits::min()) - 1; + constexpr float_t kUpperBound = + static_cast(std::numeric_limits::max()) + 1; +- constexpr bool kLowerBoundIsMin = ++ constexpr bool kLowerBoundIsMin __attribute__((unused)) = + static_cast(kLowerBound) == + static_cast(std::numeric_limits::min()); +- constexpr bool kUpperBoundIsMax = ++ constexpr bool kUpperBoundIsMax __attribute__((unused)) = + static_cast(kUpperBound) == + static_cast(std::numeric_limits::max()); + return (kLowerBoundIsMin ? (kLowerBound <= v) : (kLowerBound < v)) && +diff -up v8-6.7.17/src/compiler/node-cache.cc.fixme v8-6.7.17/src/compiler/node-cache.cc +--- v8-6.7.17/src/compiler/node-cache.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/compiler/node-cache.cc 2018-03-14 11:47:12.587247422 -0400 +@@ -38,7 +38,7 @@ bool NodeCache::Resize( + size_ *= 4; + size_t num_entries = size_ + kLinearProbe; + entries_ = zone->NewArray(num_entries); +- memset(entries_, 0, sizeof(Entry) * num_entries); ++ memset(static_cast(entries_), 0, sizeof(Entry) * num_entries); + + // Insert the old entries into the new block. + for (size_t i = 0; i < old_size; ++i) { +@@ -69,7 +69,7 @@ Node** NodeCache::Find( + size_t num_entries = kInitialSize + kLinearProbe; + entries_ = zone->NewArray(num_entries); + size_ = kInitialSize; +- memset(entries_, 0, sizeof(Entry) * num_entries); ++ memset(static_cast(entries_), 0, sizeof(Entry) * num_entries); + Entry* entry = &entries_[hash & (kInitialSize - 1)]; + entry->key_ = key; + return &entry->value_; +diff -up v8-6.7.17/src/compiler/simd-scalar-lowering.cc.fixme v8-6.7.17/src/compiler/simd-scalar-lowering.cc +--- v8-6.7.17/src/compiler/simd-scalar-lowering.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/compiler/simd-scalar-lowering.cc 2018-03-14 11:47:12.587247422 -0400 +@@ -38,7 +38,7 @@ SimdScalarLowering::SimdScalarLowering( + DCHECK_NOT_NULL(graph()); + DCHECK_NOT_NULL(graph()->end()); + replacements_ = zone()->NewArray(graph()->NodeCount()); +- memset(replacements_, 0, sizeof(Replacement) * graph()->NodeCount()); ++ memset(static_cast(replacements_), 0, sizeof(Replacement) * graph()->NodeCount()); + } + + void SimdScalarLowering::LowerGraph() { +diff -up v8-6.7.17/src/d8.cc.fixme v8-6.7.17/src/d8.cc +--- v8-6.7.17/src/d8.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/d8.cc 2018-03-14 11:47:12.588247399 -0400 +@@ -2691,7 +2691,10 @@ void Worker::ExecuteInThread() { + if (Shell::DeserializeValue(isolate, std::move(data)) + .ToLocal(&value)) { + Local argv[] = {value}; +- (void)onmessage_fun->Call(context, global, 1, argv); ++ MaybeLocal result = onmessage_fun->Call(context, global, 1, argv); ++ if (result.IsEmpty()) { ++ Shell::ReportException(isolate, &try_catch); ++ } + } + if (try_catch.HasCaught()) { + Shell::ReportException(isolate, &try_catch); +diff -up v8-6.7.17/src/flags.cc.fixme v8-6.7.17/src/flags.cc +--- v8-6.7.17/src/flags.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/flags.cc 2018-03-14 11:47:12.588247399 -0400 +@@ -557,6 +557,7 @@ static char* SkipBlackSpace(char* p) { + // static + int FlagList::SetFlagsFromString(const char* str, int len) { + // make a 0-terminated copy of str ++ assert(len > 0); + ScopedVector copy0(len + 1); + MemCopy(copy0.start(), str, len); + copy0[len] = '\0'; +diff -up v8-6.7.17/src/frames.h.fixme v8-6.7.17/src/frames.h +--- v8-6.7.17/src/frames.h.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/frames.h 2018-03-14 11:47:12.589247376 -0400 +@@ -44,7 +44,7 @@ class InnerPointerToCodeCache { + } + + void Flush() { +- memset(&cache_[0], 0, sizeof(cache_)); ++ memset(static_cast(&cache_[0]), 0, sizeof(cache_)); + } + + InnerPointerToCodeCacheEntry* GetCacheEntry(Address inner_pointer); +diff -up v8-6.7.17/src/libplatform/tracing/trace-object.cc.fixme v8-6.7.17/src/libplatform/tracing/trace-object.cc +--- v8-6.7.17/src/libplatform/tracing/trace-object.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/libplatform/tracing/trace-object.cc 2018-03-14 11:47:12.589247376 -0400 +@@ -25,7 +25,7 @@ V8_INLINE static void CopyTraceObjectPar + const char** member) { + if (*member) { + size_t length = strlen(*member) + 1; +- strncpy(*buffer, *member, length); ++ memcpy(*buffer, *member, length); + *member = *buffer; + *buffer += length; + } +diff -up v8-6.7.17/src/log.cc.fixme v8-6.7.17/src/log.cc +--- v8-6.7.17/src/log.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/log.cc 2018-03-14 11:47:12.590247353 -0400 +@@ -531,7 +531,7 @@ void JitLogger::LogRecordedBuffer(Abstra + SharedFunctionInfo* shared, const char* name, + int length) { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_ADDED; + event.code_start = code->instruction_start(); + event.code_len = code->instruction_size(); +@@ -548,7 +548,7 @@ void JitLogger::LogRecordedBuffer(Abstra + void JitLogger::LogRecordedBuffer(const InstructionStream* stream, + const char* name, int length) { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_ADDED; + event.code_start = stream->bytes(); + event.code_len = stream->byte_length(); +@@ -562,7 +562,7 @@ void JitLogger::LogRecordedBuffer(const + void JitLogger::LogRecordedBuffer(wasm::WasmCode* code, const char* name, + int length) { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_ADDED; + event.code_start = code->instructions().start(); + event.code_len = code->instructions().length(); +@@ -594,7 +594,7 @@ void JitLogger::AddCodeLinePosInfoEvent( + int position, + JitCodeEvent::PositionType position_type) { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_ADD_LINE_POS_INFO; + event.user_data = jit_handler_data; + event.line_info.offset = pc_offset; +@@ -607,7 +607,7 @@ void JitLogger::AddCodeLinePosInfoEvent( + + void* JitLogger::StartCodePosInfoEvent() { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_START_LINE_INFO_RECORDING; + + code_event_handler_(&event); +@@ -617,7 +617,7 @@ void* JitLogger::StartCodePosInfoEvent() + void JitLogger::EndCodePosInfoEvent(Address start_address, + void* jit_handler_data) { + JitCodeEvent event; +- memset(&event, 0, sizeof(event)); ++ memset(static_cast(&event), 0, sizeof(event)); + event.type = JitCodeEvent::CODE_END_LINE_INFO_RECORDING; + event.code_start = start_address; + event.user_data = jit_handler_data; +diff -up v8-6.7.17/src/parsing/parser-base.h.fixme v8-6.7.17/src/parsing/parser-base.h +--- v8-6.7.17/src/parsing/parser-base.h.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/parsing/parser-base.h 2018-03-14 11:47:12.591247330 -0400 +@@ -2163,7 +2163,8 @@ template + typename ParserBase::ExpressionT ParserBase::ParsePropertyName( + IdentifierT* name, PropertyKind* kind, bool* is_generator, bool* is_get, + bool* is_set, bool* is_async, bool* is_computed_name, bool* ok) { +- DCHECK_EQ(*kind, PropertyKind::kNotSet); ++ PropertyKind kindns = PropertyKind::kNotSet; ++ DCHECK_EQ(*kind, kindns); + DCHECK(!*is_generator); + DCHECK(!*is_get); + DCHECK(!*is_set); +diff -up v8-6.7.17/src/wasm/wasm-module-builder.h.fixme v8-6.7.17/src/wasm/wasm-module-builder.h +diff -up v8-6.7.17/src/zone/zone-segment.cc.fixme v8-6.7.17/src/zone/zone-segment.cc +--- v8-6.7.17/src/zone/zone-segment.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/src/zone/zone-segment.cc 2018-03-14 11:47:12.591247330 -0400 +@@ -15,7 +15,7 @@ void Segment::ZapContents() { + + void Segment::ZapHeader() { + #ifdef DEBUG +- memset(this, kZapDeadByte, sizeof(Segment)); ++ memset(static_cast(this), kZapDeadByte, sizeof(Segment)); + #endif + } + +diff -up v8-6.7.17/test/cctest/compiler/graph-builder-tester.h.fixme v8-6.7.17/test/cctest/compiler/graph-builder-tester.h +--- v8-6.7.17/test/cctest/compiler/graph-builder-tester.h.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/test/cctest/compiler/graph-builder-tester.h 2018-03-14 11:47:12.591247330 -0400 +@@ -164,9 +164,6 @@ class GraphBuilderTester : public Handle + Node* ChangeUint32ToTagged(Node* a) { + return NewNode(simplified()->ChangeUint32ToTagged(), a); + } +- Node* ChangeFloat64ToTagged(Node* a) { +- return NewNode(simplified()->ChangeFloat64ToTagged(), a); +- } + Node* ChangeTaggedToBit(Node* a) { + return NewNode(simplified()->ChangeTaggedToBit(), a); + } +diff -up v8-6.7.17/test/cctest/interpreter/bytecode-expectations-printer.cc.fixme v8-6.7.17/test/cctest/interpreter/bytecode-expectations-printer.cc +--- v8-6.7.17/test/cctest/interpreter/bytecode-expectations-printer.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/test/cctest/interpreter/bytecode-expectations-printer.cc 2018-03-14 11:47:12.591247330 -0400 +@@ -81,7 +81,8 @@ v8::Local BytecodeExpectatio + } + + void BytecodeExpectationsPrinter::Run(v8::Local script) const { +- (void)script->Run(isolate_->GetCurrentContext()); ++ Local result = script->Run(isolate_->GetCurrentContext()).ToLocalChecked(); ++ CHECK(!result.IsEmpty()); + } + + i::Handle +diff -up v8-6.7.17/test/cctest/parsing/test-scanner-streams.cc.fixme v8-6.7.17/test/cctest/parsing/test-scanner-streams.cc +--- v8-6.7.17/test/cctest/parsing/test-scanner-streams.cc.fixme 2018-03-06 13:58:16.000000000 -0500 ++++ v8-6.7.17/test/cctest/parsing/test-scanner-streams.cc 2018-03-14 11:47:12.592247307 -0400 +@@ -194,7 +194,7 @@ TEST(Utf8ChunkBoundaries) { + for (size_t i = 1; i < len; i++) { + // Copy source string into buffer, splitting it at i. + // Then add three chunks, 0..i-1, i..strlen-1, empty. +- strncpy(buffer, unicode_utf8, i); ++ memcpy(buffer, unicode_utf8, i); + strncpy(buffer + i + 1, unicode_utf8 + i, len - i); + buffer[i] = '\0'; + buffer[len + 1] = '\0'; +@@ -220,8 +220,8 @@ TEST(Utf8SingleByteChunks) { + char buffer[arraysize(unicode_utf8) + 4]; + for (size_t i = 1; i < len - 1; i++) { + // Copy source string into buffer, make a single-byte chunk at i. +- strncpy(buffer, unicode_utf8, i); +- strncpy(buffer + i + 3, unicode_utf8 + i + 1, len - i - 1); ++ memcpy(buffer, unicode_utf8, i); ++ memcpy(buffer + i + 3, unicode_utf8 + i + 1, len - i - 1); + buffer[i] = '\0'; + buffer[i + 1] = unicode_utf8[i]; + buffer[i + 2] = '\0'; +diff -up v8-6.7.17/testing/gtest/include/gtest/internal/gtest-param-util.h.fixme v8-6.7.17/testing/gtest/include/gtest/internal/gtest-param-util.h +--- v8-6.7.17/testing/gtest/include/gtest/internal/gtest-param-util.h.fixme 2018-03-14 12:49:02.620027123 -0400 ++++ v8-6.7.17/testing/gtest/include/gtest/internal/gtest-param-util.h 2018-03-14 12:51:50.095577470 -0400 +@@ -34,6 +34,8 @@ + #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + ++#pragma GCC diagnostic warning "-Wsubobject-linkage" ++ + #include + + #include +diff -up v8-6.7.17/test/unittests/base/functional-unittest.cc.fixme v8-6.7.17/test/unittests/base/functional-unittest.cc +--- v8-6.7.17/test/unittests/base/functional-unittest.cc.fixme 2018-03-06 13:58:17.000000000 -0500 ++++ v8-6.7.17/test/unittests/base/functional-unittest.cc 2018-03-14 11:47:12.592247307 -0400 +@@ -74,7 +74,9 @@ TYPED_TEST(FunctionalTest, EqualToImplie + this->rng()->NextBytes(values, sizeof(values)); + TRACED_FOREACH(TypeParam, v1, values) { + TRACED_FOREACH(TypeParam, v2, values) { +- if (e(v1, v2)) EXPECT_EQ(h(v1), h(v2)); ++ if (e(v1, v2)) { ++ EXPECT_EQ(h(v1), h(v2)); ++ } + } + } + } +@@ -143,7 +145,9 @@ TYPED_TEST(FunctionalTest, BitEqualToImp + this->rng()->NextBytes(&values, sizeof(values)); + TRACED_FOREACH(TypeParam, v1, values) { + TRACED_FOREACH(TypeParam, v2, values) { +- if (e(v1, v2)) EXPECT_EQ(h(v1), h(v2)); ++ if (e(v1, v2)) { ++ EXPECT_EQ(h(v1), h(v2)); ++ } + } + } + } +diff -up v8-6.7.17/test/unittests/detachable-vector-unittest.cc.fixme v8-6.7.17/test/unittests/detachable-vector-unittest.cc +--- v8-6.7.17/test/unittests/detachable-vector-unittest.cc.fixme 2018-03-06 13:58:17.000000000 -0500 ++++ v8-6.7.17/test/unittests/detachable-vector-unittest.cc 2018-03-14 11:47:12.592247307 -0400 +@@ -52,7 +52,7 @@ TEST(DetachableVector, DetachLeaksBackin + // Force allocation of the backing store. + v.push_back(1); + // Bit-copy the data structure. +- memcpy(&v2, &v, sizeof(DetachableVector)); ++ memcpy(static_cast(&v2), &v, sizeof(DetachableVector)); + // The backing store should be leaked here - free was not called. + v.detach(); + +diff -up v8-6.7.17/test/unittests/wasm/wasm-module-builder-unittest.cc.fixme v8-6.7.17/test/unittests/wasm/wasm-module-builder-unittest.cc +--- v8-6.7.17/test/unittests/wasm/wasm-module-builder-unittest.cc.fixme 2018-03-14 12:44:18.816950209 -0400 ++++ v8-6.7.17/test/unittests/wasm/wasm-module-builder-unittest.cc 2018-03-14 12:44:26.911778869 -0400 +@@ -28,7 +28,7 @@ TEST_F(WasmModuleBuilderTest, Regression + // Test crashed with asan. + ZoneBuffer buffer(zone()); + const size_t kSize = ZoneBuffer::kInitialSize * 3 + 4096 + 100; +- byte data[kSize]; ++ byte data[kSize] = {}; + buffer.write(data, kSize); + } + diff --git a/SOURCES/v8-6.7.17-i686-g1-to-avoid-mem-exhaust.patch b/SOURCES/v8-6.7.17-i686-g1-to-avoid-mem-exhaust.patch new file mode 100644 index 0000000..760d3bb --- /dev/null +++ b/SOURCES/v8-6.7.17-i686-g1-to-avoid-mem-exhaust.patch @@ -0,0 +1,12 @@ +diff -up v8-6.7.17/build/config/compiler/BUILD.gn.memexhaust v8-6.7.17/build/config/compiler/BUILD.gn +--- v8-6.7.17/build/config/compiler/BUILD.gn.memexhaust 2018-03-15 10:19:59.313283572 -0400 ++++ v8-6.7.17/build/config/compiler/BUILD.gn 2018-03-15 10:20:09.750008452 -0400 +@@ -2010,7 +2010,7 @@ config("symbols") { + # [1] crrev.com/a81d5ade0b043208e06ad71a38bcf9c348a1a52f + cflags += [ "-gdwarf-3" ] + } +- cflags += [ "-g2" ] ++ cflags += [ "-g1" ] + } + if (use_debug_fission && !is_nacl) { + cflags += [ "-gsplit-dwarf" ] diff --git a/SOURCES/v8-6.7.17-notcross.patch b/SOURCES/v8-6.7.17-notcross.patch new file mode 100644 index 0000000..9f10625 --- /dev/null +++ b/SOURCES/v8-6.7.17-notcross.patch @@ -0,0 +1,141 @@ +diff -up v8-6.7.17/build/toolchain/linux/BUILD.gn.notcross v8-6.7.17/build/toolchain/linux/BUILD.gn +--- v8-6.7.17/build/toolchain/linux/BUILD.gn.notcross 2018-03-06 14:20:53.000000000 -0500 ++++ v8-6.7.17/build/toolchain/linux/BUILD.gn 2018-03-06 14:37:22.505146107 -0500 +@@ -6,7 +6,6 @@ import("//build/config/sysroot.gni") + import("//build/toolchain/gcc_toolchain.gni") + + clang_toolchain("clang_arm") { +- toolprefix = "arm-linux-gnueabihf-" + toolchain_args = { + current_cpu = "arm" + current_os = "linux" +@@ -14,7 +13,6 @@ clang_toolchain("clang_arm") { + } + + clang_toolchain("clang_arm64") { +- toolprefix = "aarch64-linux-gnu-" + toolchain_args = { + current_cpu = "arm64" + current_os = "linux" +@@ -22,15 +20,13 @@ clang_toolchain("clang_arm64") { + } + + gcc_toolchain("arm64") { +- toolprefix = "aarch64-linux-gnu-" +- +- cc = "${toolprefix}gcc" +- cxx = "${toolprefix}g++" ++ cc = "gcc" ++ cxx = "g++" + +- ar = "${toolprefix}ar" ++ ar = "ar" + ld = cxx +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" ++ readelf = "readelf" ++ nm = "nm" + + toolchain_args = { + current_cpu = "arm64" +@@ -40,15 +36,13 @@ gcc_toolchain("arm64") { + } + + gcc_toolchain("arm") { +- toolprefix = "arm-linux-gnueabihf-" +- +- cc = "${toolprefix}gcc" +- cxx = "${toolprefix}g++" ++ cc = "gcc" ++ cxx = "g++" + +- ar = "${toolprefix}ar" ++ ar = "ar" + ld = cxx +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" ++ readelf = "readelf" ++ nm = "nm" + + toolchain_args = { + current_cpu = "arm" +@@ -178,14 +172,12 @@ clang_toolchain("clang_mips64el") { + } + + gcc_toolchain("mipsel") { +- toolprefix = "mipsel-linux-gnu-" +- +- cc = "${toolprefix}gcc" +- cxx = " ${toolprefix}g++" +- ar = "${toolprefix}ar" ++ cc = "gcc" ++ cxx = "g++" ++ ar = "ar" + ld = cxx +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" ++ readelf = "readelf" ++ nm = "nm" + + toolchain_args = { + cc_wrapper = "" +@@ -197,14 +189,12 @@ gcc_toolchain("mipsel") { + } + + gcc_toolchain("mips64el") { +- toolprefix = "mips64el-linux-gnuabi64-" +- +- cc = "${toolprefix}gcc" +- cxx = "${toolprefix}g++" +- ar = "${toolprefix}ar" ++ cc = "gcc" ++ cxx = "g++" ++ ar = "ar" + ld = cxx +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" ++ readelf = "readelf" ++ nm = "nm" + + toolchain_args = { + cc_wrapper = "" +@@ -248,14 +238,12 @@ gcc_toolchain("ppc64") { + } + + gcc_toolchain("mips") { +- toolprefix = "mips-linux-gnu-" +- +- cc = "${toolprefix}gcc" +- cxx = "${toolprefix}g++" ++ cc = "gcc" ++ cxx = "g++" + +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" +- ar = "${toolprefix}ar" ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" + ld = cxx + + toolchain_args = { +@@ -266,14 +254,12 @@ gcc_toolchain("mips") { + } + + gcc_toolchain("mips64") { +- toolprefix = "mips64-linux-gnuabi64-" +- +- cc = "${toolprefix}gcc" +- cxx = "${toolprefix}g++" ++ cc = "gcc" ++ cxx = "g++" + +- readelf = "${toolprefix}readelf" +- nm = "${toolprefix}nm" +- ar = "${toolprefix}ar" ++ readelf = "readelf" ++ nm = "nm" ++ ar = "ar" + ld = cxx + + toolchain_args = { diff --git a/SOURCES/v8-6.7.17-optflags.patch b/SOURCES/v8-6.7.17-optflags.patch new file mode 100644 index 0000000..fbb327d --- /dev/null +++ b/SOURCES/v8-6.7.17-optflags.patch @@ -0,0 +1,21 @@ +diff -up v8-6.7.17/build/config/compiler/BUILD.gn.optflags v8-6.7.17/build/config/compiler/BUILD.gn +--- v8-6.7.17/build/config/compiler/BUILD.gn.optflags 2018-03-14 14:20:29.275684642 -0400 ++++ v8-6.7.17/build/config/compiler/BUILD.gn 2018-03-14 14:22:25.056966902 -0400 +@@ -1849,7 +1849,7 @@ config("optimize_speed") { + # "default_optimization", below. + configs = [ "//build/config/nacl:irt_optimize" ] + } else { +- ldflags = common_optimize_on_ldflags ++ ldflags = [ "$OPTLDFLAGS" ] + common_optimize_on_ldflags + if (is_win) { + # Favor speed over size, /O2 must be before the common flags. The GYP + # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. +@@ -1870,7 +1870,7 @@ config("optimize_speed") { + } else if (optimize_for_fuzzing) { + cflags = [ "-O1" ] + common_optimize_on_cflags + } else { +- cflags = [ "-O3" ] + common_optimize_on_cflags ++ cflags = [ "$OPTFLAGS" ] + common_optimize_on_cflags + } + } + } diff --git a/SPECS/v8.spec b/SPECS/v8.spec new file mode 100644 index 0000000..f1781de --- /dev/null +++ b/SPECS/v8.spec @@ -0,0 +1,799 @@ +# clang doesn't understand hardening, specifically "-specs=" +%global clang_optflags %(echo %{optflags} | sed 's|-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1||g') +%global clang_ldflags %(echo "%{__global_ldflags} -Wl,--build-id" | sed 's|-specs=/usr/lib/rpm/redhat/redhat-hardened-ld||g') + +# Hi Googlers! If you're looking in here for patches, nifty. +# You (and everyone else) are welcome to use any of my Chromium spec files and +# patches under the terms of the GPLv2 or later. +# You (and everyone else) are welcome to use any of my V8-specific spec files +# and patches under the terms of the BSD license. +# You (and everyone else) may NOT use my spec files or patches under any other +# terms. +# I hate to be a party-pooper here, but I really don't want to help Google +# make a proprietary browser. There are enough of those already. +# All copyrightable work in these spec files and patches is Copyright 2011 +# Tom Callaway + +# For the 1.2 branch, we use 0s here +# For 1.3+, we use the three digit versions +# Hey, now there are four digits. What do they mean? Popsicle. +# Now there are three digits. Yeah. HOW ABOUT DEM APPLES?!? +%global somajor 6 +%global sominor 7 +%global sobuild 17 +%global sover %{somajor} + +Name: v8 +Version: %{somajor}.%{sominor}.%{sobuild} +Release: 7%{?dist} +Epoch: 1 +Summary: JavaScript Engine +Group: System Environment/Libraries +License: BSD +URL: https://chromium.googlesource.com/v8/v8/ +# To make the source, you need to have depot_tools installed and in your PATH +# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive/7e7a454f9afdddacf63e10be48f0eab603be654e.tar.gz +# Note that the depot_tools tarball above does not unpack into its own directory. +# mkdir v8-tmp +# cd v8-tmp +# fetch v8 +# cd v8 +# git checkout 6.7.17 +# gclient sync +# cd .. +# mv v8 v8-6.7.17 +# tar -c --exclude=.git --exclude=build/linux -J -f v8-6.7.17.tar.xz v8-6.7.17 +Source0: v8-6.7.17.tar.xz +# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive/7e7a454f9afdddacf63e10be48f0eab603be654e.tar.gz +Source1: depot_tools.git-master.tar.gz +# Taken from chromium-60.0.3112.78/build/linux/unbundle/icu.gn +Source2: icu.gn +# Needed to build gn. :P +# git clone https://chromium.googlesource.com/chromium/src/base +# tar cvfj chromium-base-git2d35e4d.tar.bz2 base/ +Source3: chromium-base-git2d35e4d.tar.bz2 +# git clone https://chromium.googlesource.com/chromium/src/tools/gn +# tar cvfj gn-source-gitf833e90.tar.bz2 gn/ +Source4: gn-source-gitf833e90.tar.bz2 +# Patch0: v8-4.10.91-system_icu.patch +# Patch2: v8-5.2.258-bundled-binutils.patch +Patch3: v8-5.2.258-gcc7.patch +Patch5: v8-6.2.91-nolambda.patch +Patch6: v8-6.2.91-sover.patch +# Patch7: v8-6.2.91-noxlocale.patch +# do not assume we are cross compiling +# silly google +Patch8: v8-6.7.17-notcross.patch +# On i686 and armv7hl, use -g1 to avoid mem exhaust +Patch9: v8-6.7.17-i686-g1-to-avoid-mem-exhaust.patch +# Fedora 25 and older need less flags +# and clang is not tolerant of flags it doesn't know about +Patch10: v8-6.2.91-oldclang-flags.patch +# Workaround gcc8 bug in gn +Patch11: v8-6.2.91-gcc8-gn-fabi11.patch +# So many gcc fixes +Patch12: v8-6.7.17-fixme.patch +# Use Fedora optflags +Patch13: v8-6.7.17-optflags.patch +# Reconcile libc++abi with unwind.h from gcc +# https://bugs.llvm.org/show_bug.cgi?id=35945 +# Modified patch from https://reviews.llvm.org/D42242 +Patch14: v8-6.7.17-fix-gcc-unwind-header.patch + +# PPC64 doesn't like libcxx code. +# error: '(9.223372036854775807e+18 / 1.0e+9)' is not a constant expression +# aarch64 doesn't work either. +# code does not compile on s390 +ExclusiveArch: %{ix86} x86_64 %{arm} ppc mipsel mips64el +BuildRequires: readline-devel, libicu-devel, ninja-build +BuildRequires: python2-devel, glib2-devel, libatomic +# BuildRequires: clang, llvm +BuildRequires: gcc, gcc-c++ + +%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 +as specified in ECMA-262, 3rd edition. + +%package devel +Group: Development/Libraries +Summary: Development headers and libraries for v8 +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description devel +Development headers and libraries for v8. + +%package -n python2-v8 +%{?python_provide:%python_provide python2-v8} +# Remove before F30 +Provides: %{name}-python = %{version}-%{release} +Provides: %{name}-python%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-python < %{version}-%{release} +Summary: Python libraries from v8 +Requires: %{name} = %{epoch}:%{version}-%{release} + +%description -n python2-v8 +Python libraries from v8. + +%prep +%setup -q -T -c -n depot_tools -a 1 +%setup -q -n %{name}-%{version} -a 3 +# %%patch0 -p1 -b .system_icu +# %%patch2 -p1 -b .bb +# %%patch3 -p1 -b .gcc7 +%patch5 -p1 -b .nolambda +%patch6 -p1 -b .sover +# %%patch7 -p1 -b .noxlocale +%patch8 -p1 -b .notcross +%ifarch i686 armv7hl +%patch9 -p1 -b .memexhaust +%endif +%if 0%{?fedora} <= 25 +%patch10 -p1 -b .oldflags +%endif + +cp -a %{SOURCE2} third_party/icu/BUILD.gn + +pushd tools +tar xvf %{SOURCE4} +popd + +%patch11 -p1 -b .fabi11 +%patch12 -p1 -b .fixme +%patch13 -p1 -b .optflags +%patch14 -p1 -b .unwind + +SPLITOPTFLAGS="" +for i in `echo %{optflags} | sed 's/ /\n/g'`; do + SPLITOPTFLAGS+="\"$i\", " +done +export SPLITOPTFLAGS + +SPLITLDFLAGS="" +for j in `echo %{build_ldflags} | sed 's/ /\n/g'`; do + SPLITLDFLAGS+="\"$j\", " +done +export SPLITLDFLAGS + +sed -i "s|\"\$OPTFLAGS\"|$SPLITOPTFLAGS|g" build/config/compiler/BUILD.gn +sed -i "s|\"\$OPTLDFLAGS\"|$SPLITLDFLAGS|g" build/config/compiler/BUILD.gn + +# Use system header ... except it doesn't work. +# rm -rf src/third_party/valgrind/valgrind.h +# ln -s /usr/include/valgrind/valgrind.h src/third_party/valgrind/valgrind.h + +# Don't make thin libraries. :( +for i in `find . -type f -name '*.mk'`; do sed -i 's|alink_thin|alink|g' $i; done +sed -i "s|'alink_thin'|'alink'|g" tools/gyp/pylib/gyp/generator/make.py +sed -i "s|'alink_thin'|'alink'|g" tools/gyp/pylib/gyp/generator/ninja.py +# sed -i "s|crsT|crs|g" out/Makefile +sed -i "s|crsT|crs|g" tools/gyp/pylib/gyp/generator/make.py + + +rm -rf third_party/binutils/Linux_x64/Release/bin/ld.gold +rm -rf third_party/llvm-build/Release+Asserts +mkdir -p third_party/llvm-build/Release+Asserts/bin +pushd third_party/llvm-build/Release+Asserts/bin +ln -s /usr/bin/clang clang +ln -s /usr/bin/clang++ clang++ +ln -s /usr/bin/llvm-ar llvm-ar +popd + +for i in `grep -rl "Wno-undefined-var-template" *`; do + sed -i 's|-Wno-undefined-var-template||g' $i +done + +# cleanup unversioned python parts +for i in `grep -r "/usr/bin/env python" * |grep -v "python3" |cut -d : -f 1`; do + sed -i 's|/usr/bin/env python|/usr/bin/env python2|g' $i +done +sed -i 's|exec python|exec python2|g' ../depot_tools/gn +sed -i 's|/usr/bin/env python|/usr/bin/env python2|g' ../depot_tools/gn.py + +%build +%ifarch x86_64 +%global v8arch x64 +%endif +%ifarch %{ix86} +%global v8arch x86 +%endif +%ifarch %{arm} +%global v8arch arm +%endif +%ifarch aarch64 +%global v8arch arm64 +%endif +%ifarch mipsel +%global v8arch mipsel +%endif +%ifarch mips64el +%global v8arch mips64el +%endif +%ifarch ppc +%global v8arch ppc +%endif +%ifarch ppc64 +%global v8arch ppc64 +%endif +%ifarch s390 +%global v8arch s390 +%endif +%ifarch s390x +%global v8arch s390x +%endif + +# DO THE HARLEM SHAKE +# err... I mean, build gn from source. +pushd tools/gn +./bootstrap/bootstrap.py -s +popd +rm -rf buildtools/linux64/gn* +# the tooling thinks all linux is "linux64" +cp -a out/Release/gn buildtools/linux64/gn + +# Replace ninja in depot_tools +rm -rf ../depot_tools/ninja +ln -s /usr/bin/ninja ../depot_tools/ninja + +V8_GN_DEFINES="" +V8_GN_DEFINES+=' use_sysroot=false use_gold=false enable_nacl=false linux_use_bundled_binutils=false is_component_build=true clang_use_chrome_plugins=false' +V8_GN_DEFINES+=' libcpp_is_static=true v8_use_external_startup_data=false' +V8_GN_DEFINES+=' v8_target_cpu="%{v8arch}"' +V8_GN_DEFINES+=' is_clang=false' +V8_GN_DEFINES+=' use_rtti=true' +%ifarch armv7hl armv7hnl +V8_GN_DEFINES+=' arm_float_abi="hard"' +%endif +%ifarch armv5tel armv6l armv7l +V8_GN_DEFINES+=' arm_float_abi="softfp"' +%endif + +export PATH=$PATH:%{_builddir}/depot_tools +CHROMIUM_BUILDTOOLS_PATH=./buildtools/ gn --script-executable=/usr/bin/python2 gen out.gn/%{v8arch}.release --args="$V8_GN_DEFINES" +mkdir -p out.gn/%{v8arch}.release/gen/shim_headers/icui18n_shim/third_party/icu/source/i18n/unicode +mkdir -p out.gn/%{v8arch}.release/gen/shim_headers/icuuc_shim/third_party/icu/source/common/unicode +../depot_tools/ninja -vvv -C out.gn/%{v8arch}.release + +%install +pushd out.gn/%{v8arch}.release +# library first +mkdir -p %{buildroot}%{_libdir} +cp -a libv8*.so.%{somajor} %{buildroot}%{_libdir} +# Next, binaries +mkdir -p %{buildroot}%{_bindir} +install -p -m0755 d8 %{buildroot}%{_bindir} +install -p -m0755 mksnapshot %{buildroot}%{_bindir} +# install -p -m0755 parser_fuzzer %{buildroot}%{_bindir} +%if 0 +# BLOBS! (Don't stress. They get built out of source code.) +install -p natives_blob.bin snapshot_blob.bin %{buildroot}%{_libdir} +%endif +popd + +# Now, headers +mkdir -p %{buildroot}%{_includedir} +install -p include/*.h %{buildroot}%{_includedir} +cp -a include/libplatform %{buildroot}%{_includedir} +# Are these still useful? +mkdir -p %{buildroot}%{_includedir}/v8/extensions/ +install -p src/extensions/*.h %{buildroot}%{_includedir}/v8/extensions/ + +# Make shared library links +pushd %{buildroot}%{_libdir} +ln -sf libv8.so.%{somajor} libv8.so +ln -sf libv8_libplatform.so.%{somajor} libv8_libplatform.so +ln -sf libv8_libbase.so.%{somajor} libv8_libbase.so +popd + +# install Python JS minifier scripts for nodejs +install -d %{buildroot}%{python2_sitelib} +sed -i 's|/usr/bin/python2.4|/usr/bin/env python2|g' tools/jsmin.py +sed -i 's|/usr/bin/python2.4|/usr/bin/env python2|g' tools/js2c.py +install -p -m0744 tools/jsmin.py %{buildroot}%{python2_sitelib}/ +install -p -m0744 tools/js2c.py %{buildroot}%{python2_sitelib}/ +chmod -R -x %{buildroot}%{python2_sitelib}/*.py* + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%license LICENSE +%doc AUTHORS ChangeLog +%{_bindir}/d8 +%{_bindir}/mksnapshot +%{_libdir}/*.so.* +%if 0 +%{_libdir}/*.bin +%endif + +%files devel +%{_includedir}/*.h +%{_includedir}/libplatform/ +%dir %{_includedir}/v8/ +%{_includedir}/v8/extensions/ +%{_libdir}/*.so + +%files -n python2-v8 +%{python2_sitelib}/j*.py* + +%changelog +* Tue Jul 24 2018 Tom Callaway - 1:6.7.17-7 +- add use_rtti=true flag +- cleanup unversioned python bits + +* Sat Jul 14 2018 Fedora Release Engineering - 1:6.7.17-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 10 2018 Pete Walter - 1:6.7.17-5 +- Rebuild for ICU 62 + +* Tue May 15 2018 Sergey Avseyev - 1:6.7.17-4 +- Add libv8_libbase.so symlink to devel package. + +* Tue May 8 2018 Sergey Avseyev - 1:6.7.17-3 +- Fix ARM build. Integrate fix for https://bugs.llvm.org/show_bug.cgi?id=35945 + +* Mon Apr 30 2018 Pete Walter - 1:6.7.17-2 +- Rebuild for ICU 61.1 + +* Wed Mar 14 2018 Tom Callaway - 1:6.7.17-1 +- update to 6.7.17 + +* Wed Mar 07 2018 Adam Williamson - 1:6.2.91-8 +- Rebuild to fix GCC 8 mis-compilation + See https://da.gd/YJVwk ("GCC 8 ABI change on x86_64") + +* Mon Feb 19 2018 Tom Callaway - 1:6.2.91-7 +- fix platform library symlink + +* Fri Feb 09 2018 Fedora Release Engineering - 1:6.2.91-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Nov 30 2017 Pete Walter - 1:6.2.91-5 +- Rebuild for ICU 60.1 + +* Thu Aug 31 2017 Tom Callaway - 1:6.2.91-4 +- disable some cflags on fedora 25 or older + +* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 1:6.2.91-3 +- Add Provides for the old name without %%_isa + +* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 1:6.2.91-2 +- Python 2 binary package renamed to python2-v8 + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + +* Mon Jul 31 2017 Tom Callaway - 1:6.2.91-1 +- 6.2.91 + +* Thu Jul 27 2017 Fedora Release Engineering - 1:5.2.258-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Mar 1 2017 Tom Callaway - 1:5.2.258-11 +- fix ppc64 build + +* Tue Feb 28 2017 Tom Callaway - 1:5.2.258-10 +- fix ftbfs (thanks to Ben Noordhuis) + +* Sat Feb 11 2017 Fedora Release Engineering - 1:5.2.258-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Jan 12 2017 Igor Gnatenko - 1:5.2.258-8 +- Rebuild for readline 7.x + +* Mon Oct 17 2016 Tom Callaway - 1:5.2.258-7 +- force v8 not to make thin libraries + +* Thu Oct 13 2016 Tom Callaway - 1:5.2.258-6 +- use smaller, better compressed source tarball without unnecessary git bits + +* Mon Oct 10 2016 Tom Callaway - 1:5.2.258-5 +- add bundledbinutils option to Makefile to disable "thin" static libs + +* Mon Sep 26 2016 Tom Callaway - 1:5.2.258-4 +- set snapshot=external to enable blob creation +- include blobs, static libraries + +* Tue Jul 19 2016 Fedora Release Engineering - 1:5.2.258-3 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Fri May 13 2016 Tom Callaway - 1:5.2.258-2 +- build with optflags, except for the hardening script which clang has no idea what to do with + +* Mon May 9 2016 Tom Callaway - 1:5.2.258-1 +- update to 5.2.258 + +* Mon May 2 2016 Tom Callaway - 1:5.2.197-1 +- update to 5.2.197 +- WELCOME TO THE WORLD OF TOMORROW + +* Fri Apr 15 2016 David Tardon - 1:3.14.5.10-24 +- rebuild for ICU 57.1 + +* Fri Feb 05 2016 Fedora Release Engineering - 1:3.14.5.10-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Oct 28 2015 David Tardon - 1:3.14.5.10-22 +- rebuild for ICU 56.1 + +* Mon Sep 21 2015 Tom Callaway - 1:3.14.5.10-21 +- add REPLACE_INVALID_UTF8 code needed for nodejs + +* Fri Jun 19 2015 Fedora Release Engineering - 1:3.14.5.10-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 8 2015 Tom Callaway - 1:3.14.5.10-19 +- split off python subpackage (bz 959145) + +* Thu Apr 23 2015 Tom Callaway - 1:3.14.5.10-18 +- backport security fix for ARM - CVE-2014-3152 + +* Thu Feb 19 2015 T.C. Hollingsworth - 1:3.14.5.10-17 +- backports for nodejs 0.10.36 + +* Mon Jan 26 2015 David Tardon - 1:3.14.5.10-16 +- rebuild for ICU 54.1 + +* Tue Dec 2 2014 Tom Callaway - 1:3.14.5.10-15 +- use system valgrind header (bz1141483) + +* Wed Sep 17 2014 T.C. Hollingsworth - 1:3.14.5.10-14 +- backport bugfix that eliminates unused-local-typedefs warning +- backport security fix: Fix Hydrogen bounds check elimination (CVE-2013-6668; RHBZ#1086120) +- backport fix to segfault caused by the above patch + +* Tue Aug 26 2014 David Tardon - 1:3.14.5.10-13 +- rebuild for ICU 53.1 + +* Mon Aug 18 2014 Fedora Release Engineering - 1:3.14.5.10-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 31 2014 T.C. Hollingsworth - 1:3.14.5.10-11 +- backport security fix for memory corruption and stack overflow (RHBZ#1125464) + https://groups.google.com/d/msg/nodejs/-siJEObdp10/2xcqqmTHiEMJ +- backport bug fix for x64 MathMinMax for negative untagged int32 arguments. + https://github.com/joyent/node/commit/3530fa9cd09f8db8101c4649cab03bcdf760c434 + +* Thu Jun 19 2014 T.C. Hollingsworth - 1:3.14.5.10-10 +- fix corner case in integer comparisons (v8 bug#2416; nodejs bug#7528) + +* Sun Jun 08 2014 Fedora Release Engineering - 1:3.14.5.10-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat May 03 2014 T.C. Hollingsworth - 1:3.14.5.10-8 +- use clock_gettime() instead of gettimeofday(), which increases V8 performance + dramatically on virtual machines + +* Tue Mar 18 2014 T.C. Hollingsworth - 1:3.14.5.10-7 +- backport fix for unsigned integer arithmetic (RHBZ#1077136; CVE-2014-1704) + +* Mon Feb 24 2014 Tomas Hrcka - 1:3.14.5.10-6 +- Backport fix for incorrect handling of popular pages (RHBZ#1059070; CVE-2013-6640) + +* Fri Feb 14 2014 T.C. Hollingsworth - 1:3.14.5.10-5 +- rebuild for icu-52 + +* Mon Jan 27 2014 T.C. Hollingsworth - 1:3.14.5.10-4 +- backport fix for enumeration for objects with lots of properties + +* Fri Dec 13 2013 T.C. Hollingsworth - 1:3.14.5.10-3 +- backport fix for out-of-bounds read DoS (RHBZ#1039889; CVE-2013-6640) + +* Fri Aug 02 2013 T.C. Hollingsworth - 1:3.14.5.10-2 +- backport fix for remote DoS or unspecified other impact via type confusion + (RHBZ#991116; CVE-2013-2882) + +* Wed May 29 2013 T.C. Hollingsworth - 1:3.14.5.10-1 +- new upstream release 3.14.5.10 + +* Mon May 06 2013 Stanislav Ochotnicky - 1:3.14.5.8-2 +- Fix ownership of include directory (#958729) + +* Fri Mar 22 2013 T.C. Hollingsworth - 1:3.14.5.8-1 +- new upstream release 3.14.5.8 +- backport security fix for remote DoS via crafted javascript (RHBZ#924495; CVE-2013-2632) + +* Mon Mar 11 2013 Stephen Gallagher - 1:3.14.5.7-3 +- Update to v8 3.14.5.7 for Node.js 0.10.0 + +* Sat Jan 26 2013 T.C. Hollingsworth - 1:3.13.7.5-2 +- rebuild for icu-50 +- ignore new GCC 4.8 warning + +* Tue Dec 4 2012 Tom Callaway - 1:3.13.7.5-1 +- update to 3.13.7.5 (needed for chromium 23) +- Resolves multiple security issues (CVE-2012-5120, CVE-2012-5128) +- d8 is now using a static libv8, resolves bz 881973) + +* Sun Jul 22 2012 Fedora Release Engineering - 1:3.10.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jul 6 2012 Tom Callaway 1:3.10.8-1 +- update to 3.10.8 (chromium 20) + +* Tue Jun 12 2012 Tom Callaway 1:3.9.24-1 +- update to 3.9.24 (chromium 19) + +* Mon Apr 23 2012 Thomas Spura 1:3.7.12.6 +- rebuild for icu-49 + +* Fri Mar 30 2012 Dennis Gilmore 1:3.7.12-5 +- make sure the right arm abi is used in the second call of scons + +* Thu Mar 29 2012 Dennis Gilmore 1:3.7.12-4 +- use correct arm macros +- use the correct abis for hard and soft float + +* Tue Mar 20 2012 Tom Callaway 3.7.12-3 +- merge changes from Fedora spec file, sync, add epoch + +* Fri Feb 17 2012 Tom Callaway 3.7.12-2 +- add -Wno-error=strict-overflow for gcc 4.7 (hack, hack, hack) + +* Mon Feb 13 2012 Tom Callaway 3.7.12-1 +- update to 3.7.12 + +* Thu Nov 3 2011 Tom Callaway 3.5.10-1 +- update to 3.5.10 + +* Mon Sep 26 2011 Tom Callaway 3.4.14-2 +- final 3.4.14 tag +- include JavaScript minifier scripts in -devel + +* Fri Jun 10 2011 Tom Callaway 3.2.10-1 +- tag 3.2.10 + +* Thu Apr 28 2011 Tom Callaway 3.1.8-1 +- "stable" v8 match for "stable" chromium (tag 3.1.8) + +* Tue Feb 22 2011 Tom Callaway 3.1.5-1.20110222svn6902 +- update to 3.1.5 +- enable experimental i18n icu stuff for chromium + +* Tue Jan 11 2011 Tom Callaway 3.0.7-1.20110111svn6276 +- update to 3.0.7 + +* Tue Dec 14 2010 Tom "spot" Callaway 3.0.0-2.20101209svn5957 +- fix sloppy code where NULL is used + +* Thu Dec 9 2010 Tom "spot" Callaway 3.0.0-1.20101209svn5957 +- update to 3.0.0 + +* Fri Oct 22 2010 Tom "spot" Callaway 2.5.1-1.20101022svn5692 +- update to 2.5.1 +- fix another fwrite with no return checking case + +* Thu Oct 14 2010 Tom "spot" Callaway 2.5.0-1.20101014svn5625 +- update to 2.5.0 + +* Mon Oct 4 2010 Tom "spot" Callaway 2.4.8-1.20101004svn5585 +- update to 2.4.8 + +* Tue Sep 14 2010 Tom "spot" Callaway 2.4.3-1.20100914svn5450 +- update to 2.4.3 + +* Tue Aug 31 2010 Tom "spot" Callaway 2.3.11-1.20100831svn5385 +- update to svn5385 + +* Fri Aug 27 2010 Tom "spot" Callaway 2.3.11-1.20100827svn5365 +- update to 2.3.11, svn5365 + +* Tue Aug 24 2010 Tom "spot" Callaway 2.3.10-1.20100824svn5332 +- update to 2.3.10, svn5332 + +* Wed Aug 18 2010 Tom "spot" Callaway 2.3.9-1.20100819svn5308 +- update to 2.3.9, svn5308 + +* Wed Aug 11 2010 Tom "spot" Callaway 2.3.7-1.20100812svn5251 +- update to svn5251 + +* Wed Aug 11 2010 Tom "spot" Callaway 2.3.7-1.20100811svn5248 +- update to 2.3.7, svn5248 + +* Tue Aug 10 2010 Tom "spot" Callaway 2.3.6-1.20100809svn5217 +- update to 2.3.6, svn5217 + +* Fri Aug 6 2010 Tom "spot" Callaway 2.3.5-1.20100806svn5198 +- update to 2.3.5, svn5198 + +* Mon Jul 26 2010 Tom "spot" Callaway 2.3.3-1.20100726svn5134 +- update to 2.3.3, svn5134 + +* Fri Jul 16 2010 Tom "spot" Callaway 2.3.0-1.20100716svn5088 +- update to 2.3.0, svn5088 + +* Tue Jul 6 2010 Tom "spot" Callaway 2.2.22-1.20100706svn5023 +- update to 2.2.22, svn5023 + +* Fri Jul 2 2010 Tom "spot" Callaway 2.2.21-1.20100702svn5010 +- update to svn5010 + +* Wed Jun 30 2010 Tom "spot" Callaway 2.2.21-1.20100630svn4993 +- update to 2.2.21, svn4993 +- include checkout script + +* Thu Jun 3 2010 Tom "spot" Callaway 2.2.14-1.20100603svn4792 +- update to 2.2.14, svn4792 + +* Tue Jun 1 2010 Tom "spot" Callaway 2.2.13-1.20100601svn4772 +- update to 2.2.13, svn4772 + +* Thu May 27 2010 Tom "spot" Callaway 2.2.12-1.20100527svn4747 +- update to 2.2.12, svn4747 + +* Tue May 25 2010 Tom "spot" Callaway 2.2.11-1.20100525svn4718 +- update to 2.2.11, svn4718 + +* Thu May 20 2010 Tom "spot" Callaway 2.2.10-1.20100520svn4684 +- update to svn4684 + +* Mon May 17 2010 Tom "spot" Callaway 2.2.10-1.20100517svn4664 +- update to 2.2.10, svn4664 + +* Thu May 13 2010 Tom "spot" Callaway 2.2.9-1.20100513svn4653 +- update to svn4653 + +* Mon May 10 2010 Tom "spot" Callaway 2.2.9-1.20100510svn4636 +- update to 2.2.9, svn4636 + +* Tue May 4 2010 Tom "spot" Callaway 2.2.7-1.20100504svn4581 +- update to 2.2.7, svn4581 + +* Mon Apr 19 2010 Tom "spot" Callaway 2.2.3-1.20100419svn4440 +- update to 2.2.3, svn4440 + +* Tue Apr 13 2010 Tom "spot" Callaway 2.2.2-1.20100413svn4397 +- update to 2.2.2, svn4397 + +* Thu Apr 8 2010 Tom "spot" Callaway 2.2.1-1.20100408svn4359 +- update to 2.2.1, svn4359 + +* Mon Mar 29 2010 Tom "spot" Callaway 2.2.0-1.20100329svn4309 +- update to 2.2.0, svn4309 + +* Thu Mar 25 2010 Tom "spot" Callaway 2.1.8-1.20100325svn4273 +- update to 2.1.8, svn4273 + +* Mon Mar 22 2010 Tom "spot" Callaway 2.1.5-1.20100322svn4204 +- update to 2.1.5, svn4204 + +* Mon Mar 15 2010 Tom "spot" Callaway 2.1.4-1.20100315svn4129 +- update to 2.1.4, svn4129 + +* Wed Mar 10 2010 Tom "spot" Callaway 2.1.0-1.20100310svn4088 +- update to 2.1.3, svn4088 + +* Thu Feb 18 2010 Tom "spot" Callaway 2.1.0-1.20100218svn3902 +- update to 2.1.0, svn3902 + +* Fri Jan 22 2010 Tom "spot" Callaway 2.0.6-1.20100122svn3681 +- update to 2.0.6, svn3681 + +* Tue Dec 29 2009 Tom "spot" Callaway 2.0.5-1.20091229svn3528 +- svn3528 + +* Mon Dec 21 2009 Tom "spot" Callaway 2.0.5-1.20091221svn3511 +- update to 2.0.5, svn3511 + +* Wed Dec 9 2009 Tom "spot" Callaway 2.0.3-1.20091209svn3443 +- update to 2.0.3, svn3443 + +* Tue Nov 24 2009 Tom "spot" Callaway 2.0.2-1.20091124svn3353 +- update to 2.0.2, svn3353 + +* Wed Nov 18 2009 Tom "spot" Callaway 2.0.0-1.20091118svn3334 +- update to 2.0.0, svn3334 + +* Tue Oct 27 2009 Tom "spot" Callaway 1.3.16-1.20091027svn3152 +- update to 1.3.16, svn3152 + +* Tue Oct 13 2009 Tom "spot" Callaway 1.3.15-1.20091013svn3058 +- update to svn3058 + +* Thu Oct 8 2009 Tom "spot" Callaway 1.3.15-1.20091008svn3036 +- update to 1.3.15, svn3036 + +* Tue Sep 29 2009 Tom "spot" Callaway 1.3.13-1.20090929svn2985 +- update to svn2985 +- drop unused parameter patch, figured out how to work around it with optflag mangling +- have I mentioned lately that scons is garbage? + +* Mon Sep 28 2009 Tom "spot" Callaway 1.3.13-1.20090928svn2980 +- update to 1.3.13, svn2980 + +* Wed Sep 16 2009 Tom "spot" Callaway 1.3.11-1.20090916svn2903 +- update to 1.3.11, svn2903 + +* Wed Sep 9 2009 Tom "spot" Callaway 1.3.9-1.20090909svn2862 +- update to 1.3.9, svn2862 + +* Thu Aug 27 2009 Tom "spot" Callaway 1.3.8-1.20090827svn2777 +- update to 1.3.8, svn2777 + +* Mon Aug 24 2009 Tom "spot" Callaway 1.3.6-1.20090824svn2747 +- update to 1.3.6, svn2747 + +* Tue Aug 18 2009 Tom "spot" Callaway 1.3.4-1.20090818svn2708 +- update to svn2708, build and package d8 + +* Fri Aug 14 2009 Tom "spot" Callaway 1.3.4-1.20090814svn2692 +- update to 1.3.4, svn2692 + +* Wed Aug 12 2009 Tom "spot" Callaway 1.3.3-1.20090812svn2669 +- update to 1.3.3, svn2669 + +* Mon Aug 10 2009 Tom "spot" Callaway 1.3.2-1.20090810svn2658 +- update to svn2658 + +* Fri Aug 7 2009 Tom "spot" Callaway 1.3.2-1.20090807svn2653 +- update to svn2653 + +* Wed Aug 5 2009 Tom "spot" Callaway 1.3.2-1.20090805svn2628 +- update to 1.3.2, svn2628 + +* Mon Aug 3 2009 Tom "spot" Callaway 1.3.1-1.20090803svn2607 +- update to svn2607 + +* Fri Jul 31 2009 Tom "spot" Callaway 1.3.1-1.20090731svn2602 +- update to svn2602 + +* Thu Jul 30 2009 Tom "spot" Callaway 1.3.1-1.20090730svn2592 +- update to 1.3.1, svn 2592 + +* Mon Jul 27 2009 Tom "spot" Callaway 1.3.0-1.20090727svn2543 +- update to 1.3.0, svn 2543 + +* Fri Jul 24 2009 Tom "spot" Callaway 1.2.14-1.20090724svn2534 +- update to svn2534 + +* Mon Jul 20 2009 Tom "spot" Callaway 1.2.14-1.20090720svn2510 +- update to svn2510 + +* Thu Jul 16 2009 Tom "spot" Callaway 1.2.14-1.20090716svn2488 +- update to svn2488 + +* Wed Jul 15 2009 Tom "spot" Callaway 1.2.14-1.20090715svn2477 +- update to 1.2.14, svn2477 + +* Mon Jul 13 2009 Tom "spot" Callaway 1.2.13-1.20090713svn2434 +- update to svn2434 + +* Sat Jul 11 2009 Tom "spot" Callaway 1.2.13-1.20090711svn2430 +- update to 1.2.13, svn2430 + +* Wed Jul 8 2009 Tom "spot" Callaway 1.2.12-1.20090708svn2391 +- update to 1.2.12, svn2391 + +* Sat Jul 4 2009 Tom "spot" Callaway 1.2.11-1.20090704svn2356 +- update to 1.2.11, svn2356 + +* Fri Jun 26 2009 Tom "spot" Callaway 1.2.9-1.20090626svn2284 +- update to svn2284 + +* Wed Jun 24 2009 Tom "spot" Callaway 1.2.9-1.20090624svn2262 +- update to 1.2.9, svn2262 + +* Thu Jun 18 2009 Tom "spot" Callaway 1.2.7-2.20090618svn2219 +- fix unused-parameter patch + +* Thu Jun 18 2009 Tom "spot" Callaway 1.2.7-1.20090618svn2219 +- update to 1.2.8, svn2219 + +* Mon Jun 8 2009 Tom "spot" Callaway 1.2.7-2.20090608svn2123 +- fix gcc44 compile for Fedora 11 + +* Mon Jun 8 2009 Tom "spot" Callaway 1.2.7-1.20090608svn2123 +- update to 1.2.7, svn2123 + +* Thu May 28 2009 Tom "spot" Callaway 1.2.5-1.20090528svn2072 +- update to newer svn checkout + +* Sun Feb 22 2009 Tom "spot" Callaway 1.0.1-1.20090222svn1332 +- update to newer svn checkout + +* Sun Sep 14 2008 Tom "spot" Callaway 0.2-2.20080914svn300 +- make a versioned shared library properly + +* Sun Sep 14 2008 Tom "spot" Callaway 0.2-1.20080914svn300 +- Initial package for Fedora +