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); }