WebKit Bugzilla
Attachment 339928 Details for
Bug 185462
: [WPE] Build cleanly with GCC 8 and ICU 60
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185462-20180508235655.patch (text/plain), 58.20 KB, created by
Michael Catanzaro
on 2018-05-08 21:56:56 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Michael Catanzaro
Created:
2018-05-08 21:56:56 PDT
Size:
58.20 KB
patch
obsolete
>Subversion Revision: 231538 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 21094d32ac44a5526dd5b91a71963efb64492925..20783080d5cc4eff824032b563abd242a256af3f 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,41 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * API/glib/JSCClass.cpp: Silence many -Wcast-function-type warnings. >+ (jsc_class_add_constructor): >+ (jsc_class_add_method): >+ * API/glib/JSCValue.cpp: Silence many -Wcast-function-type warnings. >+ (jsc_value_object_define_property_accessor): >+ (jsc_value_new_function): >+ * CMakeLists.txt: Build BuiltinNames.cpp with -fno-var-tracking-assignments. This was a >+ problem with GCC 7 too, but might as well fix it now. >+ * assembler/ProbeContext.h: >+ (JSC::Probe::CPUState::gpr const): Silence a -Wclass-memaccess warning. >+ (JSC::Probe::CPUState::spr const): Ditto. Assume std::remove_const is safe to clobber. >+ * b3/air/AirArg.h: >+ (JSC::B3::Air::Arg::isRepresentableAs): Silence -Wfallthrough warning. >+ * builtins/BuiltinNames.cpp: >+ (JSC::BuiltinNames::BuiltinNames): Moved from BuiltinNames.h so we can use a special flag. >+ * builtins/BuiltinNames.h: >+ (JSC::BuiltinNames::BuiltinNames): Moved to BuiltinNames.cpp. >+ * dfg/DFGDoubleFormatState.h: >+ (JSC::DFG::mergeDoubleFormatStates): Silence -Wfallthrough warnings. >+ * heap/MarkedBlockInlines.h: >+ (JSC::MarkedBlock::Handle::finishSweepKnowingHeapCellType): Silence -Wfallthrough warnings. >+ * runtime/ConfigFile.cpp: >+ (JSC::ConfigFile::canonicalizePaths): Here GCC found a genuine mistake, strncat is called >+ with the wrong length parameter and the result is not null-terminated. Also, silence a >+ -Wstringop-truncation warning as we intentionally truncate filenames that exceed PATH_MAX. >+ * runtime/IntlDateTimeFormat.cpp: >+ (JSC::IntlDateTimeFormat::partTypeString): Avoid an ICU deprecation warning. >+ * runtime/JSGlobalObject.cpp: >+ (JSC::JSGlobalObject::init): We were unconditionally running some BigInt code by accident. >+ (JSC::JSGlobalObject::visitChildren): Probably a serious bug? Fixed. >+ > 2018-05-08 Michael Saboff <msaboff@apple.com> > > Replace multiple Watchpoint Set fireAll() methods with templates >diff --git a/Source/ThirdParty/ChangeLog b/Source/ThirdParty/ChangeLog >index 153819de1414589b4f8a48aaf66313b4bdbc281a..743b9cb3f4af7f2453c28f18c53ca9bee2e8f80f 100644 >--- a/Source/ThirdParty/ChangeLog >+++ b/Source/ThirdParty/ChangeLog >@@ -1,3 +1,12 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * xdgmime/CMakeLists.txt: Silence -Wno-cast-function-type. I'm not fighting xdg-mime. >+ > 2018-03-05 Don Olmstead <don.olmstead@sony.com> > > [CMake] Split JSC header copying into public and private targets >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index 89dc436d3cc9a34c09fb997b8fa51a453cf63477..1593a0949be122f95dc7aa7807460e405f3aa7bb 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,18 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * wtf/HashTable.h: >+ (WTF::HashTableBucketInitializer<true>::initialize): Since -Wclass-memaccess warning. This >+ is probably safe enough, since it's for an empty bucket. >+ * wtf/StdLibExtras.h: >+ (WTF::bitwise_cast): Silence -Wclass-memaccess as we use type traits to ensure safety here. >+ * wtf/Vector.h: Ditto, all uses are safe. >+ * wtf/glib/WTFGType.h: Silence -Wcast-function-type. >+ > 2018-05-06 Filip Pizlo <fpizlo@apple.com> > > InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 6c074041d160c03003dff520ecd31fc1737f8d06..ffbb61fc838d32d747ed37e52b94bf26ca5d6ab9 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,44 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * PlatformGTK.cmake: Include directories are in the wrong place. >+ * accessibility/AXObjectCache.cpp: Silence -Wclass-memaccess problems and leave warnings. >+ (WebCore::AXObjectCache::startOrEndTextMarkerDataForRange): >+ (WebCore::AXObjectCache::textMarkerDataForCharacterOffset): >+ (WebCore::AXObjectCache::textMarkerDataForVisiblePosition): >+ (WebCore::AXObjectCache::textMarkerDataForFirstPositionInTextControl): >+ * css/CSSFontFace.cpp: Silence -Wfallthrough >+ (WebCore::CSSFontFace::fontLoadTiming const): >+ * css/CSSSelectorList.cpp: Silence -Wclass-memaccess, this one is intentional. >+ (WebCore::CSSSelectorList::adoptSelectorVector): >+ * editing/TextIterator.cpp: Silence ICU deprecation warnings. >+ * platform/Length.h: >+ (WebCore::Length::operator=): More -Wclass-memaccess, looks benign. >+ * platform/graphics/Gradient.cpp: >+ (WebCore::Gradient::hash const): -Wclass-memaccess again. Leave a warning. >+ * platform/graphics/SurrogatePairAwareTextIterator.cpp: Silence ICU deprecation warnings. >+ * platform/graphics/cairo/FontCairoHarfbuzzNG.cpp: >+ (WebCore::FontCascade::fontForCombiningCharacterSequence const): Silence ICU deprecation. >+ * platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp: >+ (WebCore::FontCustomPlatformData::FontCustomPlatformData): Silence -Wcast-function-type. >+ * platform/graphics/freetype/SimpleFontDataFreeType.cpp: >+ (WebCore::Font::canRenderCombiningCharacterSequence const): Silence ICU deprecation. >+ * platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp: >+ (gstAllocatorFastMallocMemUnmap): Fix -Wcast-function-type. >+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: >+ (WebCore::MediaPlayerPrivateGStreamer::updateTracks): Fix bad printf. >+ (WebCore::MediaPlayerPrivateGStreamer::enableTrack): Another bad printf. >+ (WebCore::findHLSQueue): Fix -Wcast-function-type. >+ * platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp: >+ (webKitMediaClearKeyDecryptorDecrypt): Fix another bad printf. >+ * platform/network/soup/SocketStreamHandleImplSoup.cpp: Silence -Wcast-function-type. >+ (WebCore::SocketStreamHandleImpl::beginWaitingForSocketWritability): >+ * platform/text/TextEncoding.cpp: Silence ICU deprecration. >+ > 2018-05-08 Dean Jackson <dino@apple.com> > > Disable system preview link fetching >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 013a18a36bd2992d4250de8ddfc6b16827bc896d..239a3df021abdadc3aa6cf5d60d3278a10a4a8cc 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,15 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * Platform/IPC/glib/GSocketMonitor.cpp: >+ (IPC::GSocketMonitor::start): Silence -Wcast-function-type warning. >+ * Shared/API/glib/WebKitContextMenu.cpp: >+ (webkit_context_menu_new_with_items): Ditto. >+ > 2018-05-08 Sihui Liu <sihui_liu@apple.com> > > Adopt new async _savecookies SPI for keeping networking process active during flushing cookies >diff --git a/Source/JavaScriptCore/API/glib/JSCClass.cpp b/Source/JavaScriptCore/API/glib/JSCClass.cpp >index 68433981ddb516570830b2e40c62991afdb5dcdc..841d37ce6ef1147b264d1db393a4ee6fee5b3cda 100644 >--- a/Source/JavaScriptCore/API/glib/JSCClass.cpp >+++ b/Source/JavaScriptCore/API/glib/JSCClass.cpp >@@ -563,7 +563,7 @@ JSCValue* jsc_class_add_constructor(JSCClass* jscClass, const char* name, GCallb > } > va_end(args); > >- GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(destroyNotify))); >+ GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); > JSC::ExecState* exec = toJS(jscContextGetJSContext(priv->context)); > JSC::VM& vm = exec->vm(); > JSC::JSLockHolder locker(vm); >@@ -613,7 +613,7 @@ void jsc_class_add_method(JSCClass* jscClass, const char* name, GCallback callba > } > va_end(args); > >- GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(destroyNotify))); >+ GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); > JSC::ExecState* exec = toJS(jscContextGetJSContext(priv->context)); > JSC::VM& vm = exec->vm(); > JSC::JSLockHolder locker(vm); >diff --git a/Source/JavaScriptCore/API/glib/JSCValue.cpp b/Source/JavaScriptCore/API/glib/JSCValue.cpp >index 773f3e273fe8fd3f65184480c556c08bb6012593..693ba104e61a1ca47e5fc1de1365f91ce674185f 100644 >--- a/Source/JavaScriptCore/API/glib/JSCValue.cpp >+++ b/Source/JavaScriptCore/API/glib/JSCValue.cpp >@@ -1003,14 +1003,14 @@ void jsc_value_object_define_property_accessor(JSCValue* value, const char* prop > JSC::VM& vm = exec->vm(); > JSC::JSLockHolder locker(vm); > if (getter) { >- GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(getter, userData, reinterpret_cast<GClosureNotify>(destroyNotify))); >+ GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(getter, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); > auto* functionObject = toRef(JSC::JSCCallbackFunction::create(vm, exec->lexicalGlobalObject(), ASCIILiteral("get"), > JSC::JSCCallbackFunction::Type::Method, nullptr, WTFMove(closure), propertyType, { })); > GRefPtr<JSCValue> function = jscContextGetOrCreateValue(priv->context.get(), functionObject); > jsc_value_object_set_property(descriptor.get(), "get", function.get()); > } > if (setter) { >- GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(setter, userData, getter ? nullptr : reinterpret_cast<GClosureNotify>(destroyNotify))); >+ GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(setter, userData, getter ? nullptr : reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); > auto* functionObject = toRef(JSC::JSCCallbackFunction::create(vm, exec->lexicalGlobalObject(), ASCIILiteral("set"), > JSC::JSCCallbackFunction::Type::Method, nullptr, WTFMove(closure), G_TYPE_NONE, { propertyType })); > GRefPtr<JSCValue> function = jscContextGetOrCreateValue(priv->context.get(), functionObject); >@@ -1054,7 +1054,7 @@ JSCValue* jsc_value_new_function(JSCContext* context, const char* name, GCallbac > } > va_end(args); > >- GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(destroyNotify))); >+ GRefPtr<GClosure> closure = adoptGRef(g_cclosure_new(callback, userData, reinterpret_cast<GClosureNotify>(reinterpret_cast<GCallback>(destroyNotify)))); > JSC::ExecState* exec = toJS(jscContextGetJSContext(context)); > JSC::VM& vm = exec->vm(); > JSC::JSLockHolder locker(vm); >diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt >index 7080962a66d1ddbba0ea53eb77d76a25e9c71d74..584265fadef1bf883046d0cb111b3e8f1a205fea 100644 >--- a/Source/JavaScriptCore/CMakeLists.txt >+++ b/Source/JavaScriptCore/CMakeLists.txt >@@ -1182,6 +1182,9 @@ if (COMPILER_IS_GCC_OR_CLANG) > # Avoid using fused multiply-add instructions since this could give different results > # for e.g. parseInt depending on the platform and compilation flags. > WEBKIT_ADD_TARGET_CXX_FLAGS(JavaScriptCore -ffp-contract=off) >+ >+ # Avoid "variable tracking size limit exceeded" >+ set_source_files_properties(builtins/BuiltinNames.cpp PROPERTIES COMPILE_FLAGS -fno-var-tracking-assignments) > endif () > > WEBKIT_MAKE_FORWARDING_HEADERS(JavaScriptCore >diff --git a/Source/JavaScriptCore/assembler/ProbeContext.h b/Source/JavaScriptCore/assembler/ProbeContext.h >index 3941a89cc7aea2d21e89d15179fab133f305b7c4..932eae262d680b3a59489b61978373894fd6ac1a 100644 >--- a/Source/JavaScriptCore/assembler/ProbeContext.h >+++ b/Source/JavaScriptCore/assembler/ProbeContext.h >@@ -85,7 +85,7 @@ T CPUState::gpr(RegisterID id) const > CPUState* cpu = const_cast<CPUState*>(this); > auto& from = cpu->gpr(id); > typename std::remove_const<T>::type to { }; >- std::memcpy(&to, &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues. >+ std::memcpy(static_cast<void*>(&to), &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues. > return to; > } > >@@ -95,7 +95,7 @@ T CPUState::spr(SPRegisterID id) const > CPUState* cpu = const_cast<CPUState*>(this); > auto& from = cpu->spr(id); > typename std::remove_const<T>::type to { }; >- std::memcpy(&to, &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues. >+ std::memcpy(static_cast<void*>(&to), &from, sizeof(to)); // Use std::memcpy to avoid strict aliasing issues. > return to; > } > >diff --git a/Source/JavaScriptCore/b3/air/AirArg.h b/Source/JavaScriptCore/b3/air/AirArg.h >index 7a38d108d3f4eb62de99c3b25cd1abbb7d070a6a..738dc32bd98826e0056817c6af95f7de245d85d5 100644 >--- a/Source/JavaScriptCore/b3/air/AirArg.h >+++ b/Source/JavaScriptCore/b3/air/AirArg.h >@@ -889,6 +889,7 @@ public: > case Width64: > return B3::isRepresentableAs<int64_t>(value); > } >+ break; > case Unsigned: > switch (width) { > case Width8: >diff --git a/Source/JavaScriptCore/builtins/BuiltinNames.cpp b/Source/JavaScriptCore/builtins/BuiltinNames.cpp >index f52e9b8bcf3ef680b0b1979c04d384718a52e6e9..45de82e7cb58a283b20fcae5982bbb5c04da9175 100644 >--- a/Source/JavaScriptCore/builtins/BuiltinNames.cpp >+++ b/Source/JavaScriptCore/builtins/BuiltinNames.cpp >@@ -47,6 +47,27 @@ SymbolImpl::StaticSymbolImpl dollarVMPrivateName { "PrivateSymbol.$vm", SymbolIm > SymbolImpl::StaticSymbolImpl polyProtoPrivateName { "PrivateSymbol.PolyProto", SymbolImpl::s_flagIsPrivate }; > > } // namespace Symbols >+ >+// We treat the dollarVM name as a special case below for $vm (because CommonIdentifiers does not >+// yet support the $ character). >+BuiltinNames::BuiltinNames(VM* vm, CommonIdentifiers* commonIdentifiers) >+ : m_emptyIdentifier(commonIdentifiers->emptyIdentifier) >+ JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) >+ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) >+ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS) >+ , m_dollarVMName(Identifier::fromString(vm, "$vm")) >+ , m_dollarVMPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::dollarVMPrivateName))) >+ , m_polyProtoPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::polyProtoPrivateName))) >+{ >+ JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY) >+ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY) >+ JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) >+ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) >+ JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY) >+ m_privateToPublicMap.add(m_dollarVMPrivateName.impl(), &m_dollarVMName); >+ m_publicToPrivateMap.add(m_dollarVMName.impl(), &m_dollarVMPrivateName); >+} >+ > } // namespace JSC > > #if COMPILER(MSVC) >diff --git a/Source/JavaScriptCore/builtins/BuiltinNames.h b/Source/JavaScriptCore/builtins/BuiltinNames.h >index d4f364ab3608ab2f8d9bc3a1db111004760998f7..f66b8cb51eb402d8736fd7dd0d2d0e7a292f4512 100644 >--- a/Source/JavaScriptCore/builtins/BuiltinNames.h >+++ b/Source/JavaScriptCore/builtins/BuiltinNames.h >@@ -219,26 +219,7 @@ class BuiltinNames { > WTF_MAKE_NONCOPYABLE(BuiltinNames); WTF_MAKE_FAST_ALLOCATED; > > public: >- // We treat the dollarVM name as a special case below for $vm (because CommonIdentifiers does not >- // yet support the $ character). >- >- BuiltinNames(VM* vm, CommonIdentifiers* commonIdentifiers) >- : m_emptyIdentifier(commonIdentifiers->emptyIdentifier) >- JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) >- JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_BUILTIN_NAMES_IN_JSC) >- JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_BUILTIN_SYMBOLS) >- , m_dollarVMName(Identifier::fromString(vm, "$vm")) >- , m_dollarVMPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::dollarVMPrivateName))) >- , m_polyProtoPrivateName(Identifier::fromUid(vm, &static_cast<SymbolImpl&>(Symbols::polyProtoPrivateName))) >- { >- JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY) >- JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PRIVATE_TO_PUBLIC_ENTRY) >- JSC_FOREACH_BUILTIN_FUNCTION_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) >- JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_PROPERTY_NAME(INITIALIZE_PUBLIC_TO_PRIVATE_ENTRY) >- JSC_COMMON_PRIVATE_IDENTIFIERS_EACH_WELL_KNOWN_SYMBOL(INITIALIZE_SYMBOL_PUBLIC_TO_PRIVATE_ENTRY) >- m_privateToPublicMap.add(m_dollarVMPrivateName.impl(), &m_dollarVMName); >- m_publicToPrivateMap.add(m_dollarVMName.impl(), &m_dollarVMPrivateName); >- } >+ BuiltinNames(VM*, CommonIdentifiers*); > > const Identifier* lookUpPrivateName(const Identifier&) const; > const Identifier& lookUpPublicName(const Identifier&) const; >diff --git a/Source/JavaScriptCore/dfg/DFGDoubleFormatState.h b/Source/JavaScriptCore/dfg/DFGDoubleFormatState.h >index be935a0a831246ec1d71630187b46a51ca4f33c8..0bfd73b7ce81dfe55d277a60d665179c30e6a3ee 100644 >--- a/Source/JavaScriptCore/dfg/DFGDoubleFormatState.h >+++ b/Source/JavaScriptCore/dfg/DFGDoubleFormatState.h >@@ -48,6 +48,7 @@ inline DoubleFormatState mergeDoubleFormatStates(DoubleFormatState a, DoubleForm > case CantUseDoubleFormat: > return CantUseDoubleFormat; > } >+ break; > case NotUsingDoubleFormat: > switch (b) { > case EmptyDoubleFormatState: >@@ -57,6 +58,7 @@ inline DoubleFormatState mergeDoubleFormatStates(DoubleFormatState a, DoubleForm > case CantUseDoubleFormat: > return CantUseDoubleFormat; > } >+ break; > case CantUseDoubleFormat: > return CantUseDoubleFormat; > } >diff --git a/Source/JavaScriptCore/heap/MarkedBlockInlines.h b/Source/JavaScriptCore/heap/MarkedBlockInlines.h >index e330da2bcd197c65132306c8024739d2f32c62d3..8296a871933487c58da0f7f70673fc479ec07174 100644 >--- a/Source/JavaScriptCore/heap/MarkedBlockInlines.h >+++ b/Source/JavaScriptCore/heap/MarkedBlockInlines.h >@@ -388,6 +388,7 @@ void MarkedBlock::Handle::finishSweepKnowingHeapCellType(FreeList* freeList, con > specializedSweep<true, IsEmpty, SweepOnly, BlockHasDestructors, DontScribble, DoesNotHaveNewlyAllocated, MarksStale>(freeList, IsEmpty, SweepOnly, BlockHasDestructors, DontScribble, DoesNotHaveNewlyAllocated, MarksStale, destroyFunc); > return true; > } >+ break; > case SweepToFreeList: > switch (marksMode) { > case MarksNotStale: >@@ -398,6 +399,7 @@ void MarkedBlock::Handle::finishSweepKnowingHeapCellType(FreeList* freeList, con > return true; > } > } >+ break; > case NotEmpty: > switch (sweepMode) { > case SweepOnly: >@@ -409,6 +411,7 @@ void MarkedBlock::Handle::finishSweepKnowingHeapCellType(FreeList* freeList, con > specializedSweep<true, NotEmpty, SweepOnly, BlockHasDestructors, DontScribble, DoesNotHaveNewlyAllocated, MarksStale>(freeList, NotEmpty, SweepOnly, BlockHasDestructors, DontScribble, DoesNotHaveNewlyAllocated, MarksStale, destroyFunc); > return true; > } >+ break; > case SweepToFreeList: > switch (marksMode) { > case MarksNotStale: >diff --git a/Source/JavaScriptCore/runtime/ConfigFile.cpp b/Source/JavaScriptCore/runtime/ConfigFile.cpp >index bb87666c4851ba70b0b52cf148d870c72e683f47..98c196f82f6851bdf70ef8d6223b5a169129362f 100644 >--- a/Source/JavaScriptCore/runtime/ConfigFile.cpp >+++ b/Source/JavaScriptCore/runtime/ConfigFile.cpp >@@ -488,8 +488,19 @@ void ConfigFile::canonicalizePaths() > bool shouldAddPathSeparator = filenameBuffer[pathnameLength - 1] != '/'; > if (sizeof(filenameBuffer) - 1 >= pathnameLength + shouldAddPathSeparator) { > if (shouldAddPathSeparator) >- strncat(filenameBuffer, "/", 1); >+ strncat(filenameBuffer, "/", 2); // Room for '/' plus NUL >+#if COMPILER(GCC) >+#if GCC_VERSION_AT_LEAST(8, 0, 0) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wstringop-truncation" >+#endif >+#endif > strncat(filenameBuffer, m_filename, sizeof(filenameBuffer) - strlen(filenameBuffer) - 1); >+#if COMPILER(GCC) >+#if GCC_VERSION_AT_LEAST(8, 0, 0) >+#pragma GCC diagnostic pop >+#endif >+#endif > strncpy(m_filename, filenameBuffer, s_maxPathLength); > m_filename[s_maxPathLength] = '\0'; > } >diff --git a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >index 381ebabdeb3c04fd891ab18e1cd2937ae736eaa2..1573c7295f149796a05ad79782d07263347233e4 100644 >--- a/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >+++ b/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp >@@ -964,7 +964,7 @@ const char* IntlDateTimeFormat::partTypeString(UDateFormatField field) > case UDAT_STANDALONE_QUARTER_FIELD: > case UDAT_RELATED_YEAR_FIELD: > case UDAT_TIME_SEPARATOR_FIELD: >-#if U_ICU_VERSION_MAJOR_NUM < 58 >+#if U_ICU_VERSION_MAJOR_NUM < 58 || !defined(U_HIDE_DEPRECATED_API) > case UDAT_FIELD_COUNT: > #endif > return "literal"; >diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >index e1398e2f74e825c4b221ac0dc5b4abee9197fafe..69b537eb5d6e921e72d46850e196c0aa2df94632 100644 >--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >@@ -627,9 +627,10 @@ void JSGlobalObject::init(VM& vm) > m_generatorPrototype.set(vm, this, GeneratorPrototype::create(vm, this, GeneratorPrototype::createStructure(vm, this, m_iteratorPrototype.get()))); > m_asyncGeneratorPrototype.set(vm, this, AsyncGeneratorPrototype::create(vm, this, AsyncGeneratorPrototype::createStructure(vm, this, m_asyncIteratorPrototype.get()))); > >-#define CREATE_PROTOTYPE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) \ >-m_ ## lowerName ## Prototype.set(vm, this, capitalName##Prototype::create(vm, this, capitalName##Prototype::createStructure(vm, this, m_ ## prototypeBase ## Prototype.get()))); \ >-m_ ## properName ## Structure.set(vm, this, instanceType::createStructure(vm, this, m_ ## lowerName ## Prototype.get())); >+#define CREATE_PROTOTYPE_FOR_SIMPLE_TYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) do { \ >+ m_ ## lowerName ## Prototype.set(vm, this, capitalName##Prototype::create(vm, this, capitalName##Prototype::createStructure(vm, this, m_ ## prototypeBase ## Prototype.get()))); \ >+ m_ ## properName ## Structure.set(vm, this, instanceType::createStructure(vm, this, m_ ## lowerName ## Prototype.get())); \ >+ } while (0); > > FOR_EACH_SIMPLE_BUILTIN_TYPE(CREATE_PROTOTYPE_FOR_SIMPLE_TYPE) > >@@ -1437,9 +1438,10 @@ void JSGlobalObject::visitChildren(JSCell* cell, SlotVisitor& visitor) > visitor.append(thisObject->m_sharedArrayBufferStructure); > #endif > >-#define VISIT_SIMPLE_TYPE(CapitalName, lowerName, properName, instanceType, jsName, prototypeBase) \ >- visitor.append(thisObject->m_ ## lowerName ## Prototype); \ >- visitor.append(thisObject->m_ ## properName ## Structure); \ >+#define VISIT_SIMPLE_TYPE(CapitalName, lowerName, properName, instanceType, jsName, prototypeBase) do { \ >+ visitor.append(thisObject->m_ ## lowerName ## Prototype); \ >+ visitor.append(thisObject->m_ ## properName ## Structure); \ >+ } while (0); > > FOR_EACH_SIMPLE_BUILTIN_TYPE(VISIT_SIMPLE_TYPE) > if (UNLIKELY(Options::useBigInt())) >diff --git a/Source/ThirdParty/xdgmime/CMakeLists.txt b/Source/ThirdParty/xdgmime/CMakeLists.txt >index 73fee948e5760b7f1f107429909737149c185da3..2605e1cd90c3a097ee2a71b56e0121de6fa4fcdc 100644 >--- a/Source/ThirdParty/xdgmime/CMakeLists.txt >+++ b/Source/ThirdParty/xdgmime/CMakeLists.txt >@@ -21,6 +21,7 @@ add_definitions(-DXDG_PREFIX=_wk_xdg) > add_library(xdgmime STATIC ${XDGMIME_SOURCES}) > > if (COMPILER_IS_GCC_OR_CLANG) >- WEBKIT_ADD_TARGET_C_FLAGS(xdgmime -Wno-sign-compare >+ WEBKIT_ADD_TARGET_C_FLAGS(xdgmime -Wno-cast-function-type >+ -Wno-sign-compare > -Wno-unused-parameter) > endif () >diff --git a/Source/WTF/wtf/HashTable.h b/Source/WTF/wtf/HashTable.h >index 022e281cc93a5cea39d3d07704730430e95ad82f..e6a950fd400936cc4bff3d864a247852eadb35de 100644 >--- a/Source/WTF/wtf/HashTable.h >+++ b/Source/WTF/wtf/HashTable.h >@@ -847,7 +847,7 @@ namespace WTF { > // This initializes the bucket without copying the empty value. > // That makes it possible to use this with types that don't support copying. > // The memset to 0 looks like a slow operation but is optimized by the compilers. >- memset(std::addressof(bucket), 0, sizeof(bucket)); >+ memset(static_cast<void*>(std::addressof(bucket)), 0, sizeof(bucket)); > } > }; > >diff --git a/Source/WTF/wtf/StdLibExtras.h b/Source/WTF/wtf/StdLibExtras.h >index 49f2e2988d926bc56595ebc9a0ce927184087abe..765f43281df0915721d8f4aa4f95adb7b12fe52f 100644 >--- a/Source/WTF/wtf/StdLibExtras.h >+++ b/Source/WTF/wtf/StdLibExtras.h >@@ -142,7 +142,7 @@ inline ToType bitwise_cast(FromType from) > static_assert(__is_trivially_copyable(FromType), "bitwise_cast of non-trivially-copyable type!"); > #endif > typename std::remove_const<ToType>::type to { }; >- std::memcpy(&to, &from, sizeof(to)); >+ std::memcpy(static_cast<void*>(&to), static_cast<void*>(&from), sizeof(to)); > return to; > } > >diff --git a/Source/WTF/wtf/Vector.h b/Source/WTF/wtf/Vector.h >index cfcb6bbac5ab34c9cc8abcda023ef1c1b9a559d8..80ee20b368fac0cd47f231631752e0412f6b5aff 100644 >--- a/Source/WTF/wtf/Vector.h >+++ b/Source/WTF/wtf/Vector.h >@@ -96,7 +96,7 @@ struct VectorInitializer<true, true, T> > { > static void initializeIfNonPOD(T* begin, T* end) > { >- memset(begin, 0, reinterpret_cast<char*>(end) - reinterpret_cast<char*>(begin)); >+ memset(static_cast<void*>(begin), 0, reinterpret_cast<char*>(end) - reinterpret_cast<char*>(begin)); > } > > static void initialize(T* begin, T* end) >@@ -141,11 +141,11 @@ struct VectorMover<true, T> > { > static void move(const T* src, const T* srcEnd, T* dst) > { >- memcpy(dst, src, reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); >+ memcpy(static_cast<void*>(dst), static_cast<void*>(const_cast<T*>(src)), reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); > } > static void moveOverlapping(const T* src, const T* srcEnd, T* dst) > { >- memmove(dst, src, reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); >+ memmove(static_cast<void*>(dst), static_cast<void*>(const_cast<T*>(src)), reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); > } > }; > >@@ -171,7 +171,7 @@ struct VectorCopier<true, T> > { > static void uninitializedCopy(const T* src, const T* srcEnd, T* dst) > { >- memcpy(dst, src, reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); >+ memcpy(static_cast<void*>(dst), static_cast<void*>(const_cast<T*>(src)), reinterpret_cast<const char*>(srcEnd) - reinterpret_cast<const char*>(src)); > } > template<typename U> > static void uninitializedCopy(const T* src, const T* srcEnd, U* dst) >diff --git a/Source/WTF/wtf/glib/WTFGType.h b/Source/WTF/wtf/glib/WTFGType.h >index 7b733b58389aa707c4dab62fa134290ece3fff35..7f1cf4dc374a89891bd3a6562f92b56d0b7e9802 100644 >--- a/Source/WTF/wtf/glib/WTFGType.h >+++ b/Source/WTF/wtf/glib/WTFGType.h >@@ -54,7 +54,7 @@ static void type_name##_finalize(GObject* object) \ > G_OBJECT_CLASS(type_name##_parent_class)->finalize(object); \ > } \ > \ >-static void type_name##_class_intern_init(gpointer klass) \ >+static void type_name##_class_intern_init(gpointer klass, gpointer) \ > { \ > GObjectClass* gObjectClass = G_OBJECT_CLASS(klass); \ > g_type_class_add_private(klass, sizeof(TypeName##Private)); \ >@@ -63,7 +63,7 @@ static void type_name##_class_intern_init(gpointer klass) \ > gObjectClass->finalize = type_name##_finalize; \ > } \ > \ >-static void type_name##_init(TypeName* self) \ >+static void type_name##_init(TypeName* self, gpointer) \ > { \ > TypeName##Private* priv = G_TYPE_INSTANCE_GET_PRIVATE(self, type_name##_get_type(), TypeName##Private); \ > self->priv = priv; \ >diff --git a/Source/WebCore/PlatformGTK.cmake b/Source/WebCore/PlatformGTK.cmake >index a6f77f7665e45bc007323cef8593584666902df9..823c77ddb218e43df14c873fb5a6f6edabafa8a0 100644 >--- a/Source/WebCore/PlatformGTK.cmake >+++ b/Source/WebCore/PlatformGTK.cmake >@@ -156,11 +156,11 @@ if (ENABLE_PLUGIN_PROCESS_GTK2) > ) > target_include_directories(WebCorePlatformGTK2 PRIVATE > ${WebCore_INCLUDE_DIRECTORIES} >- ${GTK2_INCLUDE_DIRS} >- ${GDK2_INCLUDE_DIRS} > ) > target_include_directories(WebCorePlatformGTK2 SYSTEM PRIVATE > ${WebCore_SYSTEM_INCLUDE_DIRECTORIES} >+ ${GTK2_INCLUDE_DIRS} >+ ${GDK2_INCLUDE_DIRS} > ) > target_link_libraries(WebCorePlatformGTK2 > ${WebCore_LIBRARIES} >diff --git a/Source/WebCore/accessibility/AXObjectCache.cpp b/Source/WebCore/accessibility/AXObjectCache.cpp >index 3998f313e0f6ab24abb903fe46cab8a70eb02780..31b8a2b78c323dfbe9c99e5d1691d6c9eaa47f54 100644 >--- a/Source/WebCore/accessibility/AXObjectCache.cpp >+++ b/Source/WebCore/accessibility/AXObjectCache.cpp >@@ -1961,7 +1961,9 @@ CharacterOffset AXObjectCache::startOrEndCharacterOffsetForRange(RefPtr<Range> r > > void AXObjectCache::startOrEndTextMarkerDataForRange(TextMarkerData& textMarkerData, RefPtr<Range> range, bool isStart) > { >- memset(&textMarkerData, 0, sizeof(TextMarkerData)); >+ // This memory must be zero'd so instances of TextMarkerData can be tested for byte-equivalence. >+ // Warning: This is risky and bad because TextMarkerData is a nontrivial type. >+ memset(static_cast<void*>(&textMarkerData), 0, sizeof(TextMarkerData)); > > CharacterOffset characterOffset = startOrEndCharacterOffsetForRange(range, isStart); > if (characterOffset.isNull()) >@@ -2018,7 +2020,10 @@ CharacterOffset AXObjectCache::characterOffsetForNodeAndOffset(Node& node, int o > > void AXObjectCache::textMarkerDataForCharacterOffset(TextMarkerData& textMarkerData, const CharacterOffset& characterOffset) > { >- memset(&textMarkerData, 0, sizeof(TextMarkerData)); >+ // This memory must be zero'd so instances of TextMarkerData can be tested for byte-equivalence. >+ // Warning: This is risky and bad because TextMarkerData is a nontrivial type. >+ memset(static_cast<void*>(&textMarkerData), 0, sizeof(TextMarkerData)); >+ > setTextMarkerDataWithCharacterOffset(textMarkerData, characterOffset); > } > >@@ -2198,8 +2203,9 @@ std::optional<TextMarkerData> AXObjectCache::textMarkerDataForVisiblePosition(co > RefPtr<AccessibilityObject> obj = cache->getOrCreate(domNode); > > // This memory must be zero'd so instances of TextMarkerData can be tested for byte-equivalence. >+ // Warning: This is risky and bad because TextMarkerData is a nontrivial type. > TextMarkerData textMarkerData; >- memset(&textMarkerData, 0, sizeof(TextMarkerData)); >+ memset(static_cast<void*>(&textMarkerData), 0, sizeof(TextMarkerData)); > > textMarkerData.axID = obj.get()->axObjectID(); > textMarkerData.node = domNode; >@@ -2226,8 +2232,9 @@ std::optional<TextMarkerData> AXObjectCache::textMarkerDataForFirstPositionInTex > return std::nullopt; > > // This memory must be zero'd so instances of TextMarkerData can be tested for byte-equivalence. >+ // Warning: This is risky and bad because TextMarkerData is a nontrivial type. > TextMarkerData textMarkerData; >- memset(&textMarkerData, 0, sizeof(TextMarkerData)); >+ memset(static_cast<void*>(&textMarkerData), 0, sizeof(TextMarkerData)); > > textMarkerData.axID = obj.get()->axObjectID(); > textMarkerData.node = &textControl; >diff --git a/Source/WebCore/css/CSSFontFace.cpp b/Source/WebCore/css/CSSFontFace.cpp >index 482c0c084e1f0c608251a6a64a74254be10f0891..9930833e97ee83f7447b56d5f75546cebf651099 100644 >--- a/Source/WebCore/css/CSSFontFace.cpp >+++ b/Source/WebCore/css/CSSFontFace.cpp >@@ -605,6 +605,7 @@ auto CSSFontFace::fontLoadTiming() const -> FontLoadTiming > case FontLoadingBehavior::Optional: > return { 0.1_s, 0_s }; > } >+ break; > case Settings::FontLoadTimingOverride::Block: > return { Seconds::infinity(), 0_s }; > case Settings::FontLoadTimingOverride::Swap: >diff --git a/Source/WebCore/css/CSSSelectorList.cpp b/Source/WebCore/css/CSSSelectorList.cpp >index 57efa67d0b3ea488fc7ac34e114a3b60ed8ce6a9..4fc69838c71081136e02fa2395ccea9681b9f4a5 100644 >--- a/Source/WebCore/css/CSSSelectorList.cpp >+++ b/Source/WebCore/css/CSSSelectorList.cpp >@@ -67,7 +67,7 @@ void CSSSelectorList::adoptSelectorVector(Vector<std::unique_ptr<CSSParserSelect > { > // Move item from the parser selector vector into m_selectorArray without invoking destructor (Ugh.) > CSSSelector* currentSelector = current->releaseSelector().release(); >- memcpy(&m_selectorArray[arrayIndex], currentSelector, sizeof(CSSSelector)); >+ memcpy(static_cast<void*>(&m_selectorArray[arrayIndex]), static_cast<void*>(currentSelector), sizeof(CSSSelector)); > > // Free the underlying memory without invoking the destructor. > operator delete (currentSelector); >diff --git a/Source/WebCore/editing/TextIterator.cpp b/Source/WebCore/editing/TextIterator.cpp >index 6574f1ed57d0ed2b8720e0c82b84a862e2e20466..4b22a5093d1313d753223936ba435f094cfa1b12 100644 >--- a/Source/WebCore/editing/TextIterator.cpp >+++ b/Source/WebCore/editing/TextIterator.cpp >@@ -1999,11 +1999,11 @@ static inline bool containsKanaLetters(const String& pattern) > return false; > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic push >-#pragma clang diagnostic ignored "-Wdeprecated-declarations" >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > #endif >-// NOTE: ICU's unorm_normalize function is deprecated in some SDKs. >+// NOTE: ICU's unorm_normalize function is deprecated. > > static void normalizeCharacters(const UChar* characters, unsigned length, Vector<UChar>& buffer) > { >@@ -2026,8 +2026,8 @@ static void normalizeCharacters(const UChar* characters, unsigned length, Vector > ASSERT(status == U_STRING_NOT_TERMINATED_WARNING); > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic pop >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic pop > #endif > > static bool isNonLatin1Separator(UChar32 character) >diff --git a/Source/WebCore/platform/Length.h b/Source/WebCore/platform/Length.h >index 64a08e8c1b4fc96e53cc72beb6ec84b0c757a759..bf14421af35f79d7e40fd3cdf4adfc43a57cdeaf 100644 >--- a/Source/WebCore/platform/Length.h >+++ b/Source/WebCore/platform/Length.h >@@ -196,7 +196,7 @@ inline Length& Length::operator=(const Length& other) > if (isCalculated()) > deref(); > >- memcpy(this, &other, sizeof(Length)); >+ memcpy(static_cast<void*>(this), static_cast<void*>(const_cast<Length*>(&other)), sizeof(Length)); > return *this; > } > >@@ -208,7 +208,7 @@ inline Length& Length::operator=(Length&& other) > if (isCalculated()) > deref(); > >- memcpy(this, &other, sizeof(Length)); >+ memcpy(static_cast<void*>(this), static_cast<void*>(&other), sizeof(Length)); > other.m_type = Auto; > return *this; > } >diff --git a/Source/WebCore/platform/graphics/Gradient.cpp b/Source/WebCore/platform/graphics/Gradient.cpp >index e7f8c671015303cc8a176f469e6d86e258748a24..8994c021edfb92616bedcf2f527ae156bb17c529 100644 >--- a/Source/WebCore/platform/graphics/Gradient.cpp >+++ b/Source/WebCore/platform/graphics/Gradient.cpp >@@ -213,7 +213,8 @@ unsigned Gradient::hash() const > COMPILE_ASSERT(!(sizeof(ColorStop) % 2), Color_stop_size_should_be_multiple_of_two); > > // Ensure that any padding in the struct is zero-filled, so it will not affect the hash value. >- memset(¶meters, 0, sizeof(parameters)); >+ // FIXME: This is asking for trouble, because it is a nontrivial type. >+ memset(static_cast<void*>(¶meters), 0, sizeof(parameters)); > > WTF::switchOn(m_data, > [¶meters] (const LinearData& data) { >diff --git a/Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp b/Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp >index 3aae7ed4928696ddedd0d4979998d39903f77bd5..4d5d8088a92ce97e9cd480bc4c8ea568b8e6a6ba 100644 >--- a/Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp >+++ b/Source/WebCore/platform/graphics/SurrogatePairAwareTextIterator.cpp >@@ -69,11 +69,11 @@ bool SurrogatePairAwareTextIterator::consumeSlowCase(UChar32& character, unsigne > return true; > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic push >-#pragma clang diagnostic ignored "-Wdeprecated-declarations" >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > #endif >-// NOTE: ICU's unorm_normalize function is deprecated in some SDKs. >+// NOTE: ICU's unorm_normalize function is deprecated. > > UChar32 SurrogatePairAwareTextIterator::normalizeVoicingMarks() > { >@@ -95,8 +95,8 @@ UChar32 SurrogatePairAwareTextIterator::normalizeVoicingMarks() > return 0; > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic pop >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic pop > #endif > > } >diff --git a/Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp b/Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp >index a8a78c7bda1be6a1129898f9beae0d157bc4fac2..ef843a061e9c0c8267163489dcfaa365b0f7579e 100644 >--- a/Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp >+++ b/Source/WebCore/platform/graphics/cairo/FontCairoHarfbuzzNG.cpp >@@ -49,7 +49,14 @@ const Font* FontCascade::fontForCombiningCharacterSequence(const UChar* characte > { > UErrorCode error = U_ZERO_ERROR; > Vector<UChar, 4> normalizedCharacters(length); >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" >+#endif > int32_t normalizedLength = unorm_normalize(characters, length, UNORM_NFC, UNORM_UNICODE_3_2, normalizedCharacters.data(), length, &error); >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic pop >+#endif > if (U_FAILURE(error)) > return nullptr; > >diff --git a/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp b/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp >index d3fc934fe4be263eacd1d1cc93e1f692d010ab66..bd9cd0009afba09ef51ed4e8e0fc2c44f11f2faf 100644 >--- a/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp >+++ b/Source/WebCore/platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp >@@ -48,7 +48,7 @@ FontCustomPlatformData::FontCustomPlatformData(FT_Face freeTypeFace, SharedBuffe > // this cairo_font_face_t is destroyed, it cleans up the FreeType face as well. > static cairo_user_data_key_t freeTypeFaceKey; > cairo_font_face_set_user_data(m_fontFace, &freeTypeFaceKey, freeTypeFace, >- reinterpret_cast<cairo_destroy_func_t>(FT_Done_Face)); >+ reinterpret_cast<cairo_destroy_func_t>(reinterpret_cast<GCallback>(FT_Done_Face))); > } > > FontCustomPlatformData::~FontCustomPlatformData() >diff --git a/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp b/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp >index 6a0c32105c3e36b1032f87b91908948a670d8d20..e38290b3acb95521daa99089d6f2f91ed631a55c 100644 >--- a/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp >+++ b/Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp >@@ -199,7 +199,14 @@ bool Font::canRenderCombiningCharacterSequence(const UChar* characters, size_t l > > UErrorCode error = U_ZERO_ERROR; > Vector<UChar, 4> normalizedCharacters(length); >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" >+#endif > int32_t normalizedLength = unorm_normalize(characters, length, UNORM_NFC, UNORM_UNICODE_3_2, &normalizedCharacters[0], length, &error); >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic pop >+#endif > if (U_FAILURE(error)) > return false; > >diff --git a/Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp b/Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp >index 6bca2c9bcaa875d81cc5fb040ffd97e8825f5a5b..a3f4d3ef5a3f3dff3f8b2952e8f8ad9ed0f77613 100644 >--- a/Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp >+++ b/Source/WebCore/platform/graphics/gstreamer/GstAllocatorFastMalloc.cpp >@@ -86,9 +86,8 @@ static gpointer gstAllocatorFastMallocMemMap(GstMemoryFastMalloc* memory, gsize, > return memory->data; > } > >-static gboolean gstAllocatorFastMallocMemUnmap(GstMemoryFastMalloc*) >+static void gstAllocatorFastMallocMemUnmap(GstMemoryFastMalloc*) > { >- return TRUE; > } > > static GstMemoryFastMalloc* gstAllocatorFastMallocMemCopy(GstMemoryFastMalloc* memory, gssize offset, gsize size) >diff --git a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >index 36a95262ef4277a9acb5f6eeabb63e85c4188645..223d43ee8110c5784af0a5246e94c4bc77123983 100644 >--- a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >+++ b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp >@@ -685,7 +685,7 @@ void MediaPlayerPrivateGStreamer::updateTracks() > GST_WARNING("Unknown track type found for stream %s", streamId.utf8().data()); > } > >- GST_INFO("Media has %u video tracks, %u audio tracks and %u text tracks", validVideoStreams.size(), validAudioStreams.size(), validTextStreams.size()); >+ GST_INFO("Media has %zu video tracks, %zu audio tracks and %zu text tracks", validVideoStreams.size(), validAudioStreams.size(), validTextStreams.size()); > > bool oldHasAudio = m_hasAudio; > bool oldHasVideo = m_hasVideo; >@@ -749,7 +749,7 @@ void MediaPlayerPrivateGStreamer::enableTrack(TrackPrivateBaseGStreamer::TrackTy > ASSERT_NOT_REACHED(); > } > >- GST_INFO("Enabling %s track with index: %lu", trackTypeAsString, index); >+ GST_INFO("Enabling %s track with index: %u", trackTypeAsString, index); > // FIXME: Remove isMediaSource() test below when fixing https://bugs.webkit.org/show_bug.cgi?id=182531 > if (m_isLegacyPlaybin || isMediaSource()) { > GstElement* element = isMediaSource() ? m_source.get() : m_pipeline.get(); >@@ -762,7 +762,7 @@ void MediaPlayerPrivateGStreamer::enableTrack(TrackPrivateBaseGStreamer::TrackTy > String streamId = gst_stream_get_stream_id(stream); > selectedStreams = g_list_append(selectedStreams, g_strdup(streamId.utf8().data())); > } else >- GST_WARNING("%s stream %lu not found", trackTypeAsString, index); >+ GST_WARNING("%s stream %u not found", trackTypeAsString, index); > > // TODO: MSE GstStream API support: https://bugs.webkit.org/show_bug.cgi?id=182531 > gst_element_send_event(m_pipeline.get(), gst_event_new_select_streams(selectedStreams)); >@@ -1477,8 +1477,9 @@ void MediaPlayerPrivateGStreamer::purgeInvalidTextTracks(Vector<String> validTra > } > #endif > >-static int findHLSQueue(const GValue* item) >+static gint findHLSQueue(gconstpointer a, gconstpointer) > { >+ GValue* item = static_cast<GValue*>(const_cast<gpointer>(a)); > GstElement* element = GST_ELEMENT(g_value_get_object(item)); > if (g_str_has_prefix(GST_ELEMENT_NAME(element), "queue")) { > GstElement* parent = GST_ELEMENT(GST_ELEMENT_PARENT(element)); >diff --git a/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp >index 638c4c1958d442c698268323ac8cc9261dc92a5d..8ed570c5a907976bc71680e99c67491192f83923 100644 >--- a/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp >+++ b/Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp >@@ -255,7 +255,7 @@ static gboolean webKitMediaClearKeyDecryptorDecrypt(WebKitMediaCommonEncryptionD > > if (!subSampleCount) { > // Full sample encryption. >- GST_TRACE_OBJECT(self, "full sample encryption: %d encrypted bytes", map.size); >+ GST_TRACE_OBJECT(self, "full sample encryption: %zu encrypted bytes", map.size); > > // Check if the buffer is empty. > if (map.size) { >diff --git a/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp b/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp >index b94ab58f2350ed933f0aac395484a7e6b5419b4a..248a421e41e6f7bd11cfabb8e723a11f2bd4bd01 100644 >--- a/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp >+++ b/Source/WebCore/platform/network/soup/SocketStreamHandleImplSoup.cpp >@@ -268,7 +268,7 @@ void SocketStreamHandleImpl::beginWaitingForSocketWritability() > > m_writeReadySource = adoptGRef(g_pollable_output_stream_create_source(m_outputStream.get(), m_cancellable.get())); > ref(); >- g_source_set_callback(m_writeReadySource.get(), reinterpret_cast<GSourceFunc>(writeReadyCallback), this, [](gpointer handle) { >+ g_source_set_callback(m_writeReadySource.get(), reinterpret_cast<GSourceFunc>(reinterpret_cast<GCallback>(writeReadyCallback)), this, [](gpointer handle) { > static_cast<SocketStreamHandleImpl*>(handle)->deref(); > }); > g_source_attach(m_writeReadySource.get(), g_main_context_get_thread_default()); >diff --git a/Source/WebCore/platform/text/TextEncoding.cpp b/Source/WebCore/platform/text/TextEncoding.cpp >index 1792f8793cb7d43bed3c72a635059df9dc807db8..4013f37cf7e1d7f7728d8c007ffa681726d5e01d 100644 >--- a/Source/WebCore/platform/text/TextEncoding.cpp >+++ b/Source/WebCore/platform/text/TextEncoding.cpp >@@ -69,11 +69,11 @@ String TextEncoding::decode(const char* data, size_t length, bool stopOnError, b > return newTextCodec(*this)->decode(data, length, true, stopOnError, sawError); > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic push >-#pragma clang diagnostic ignored "-Wdeprecated-declarations" >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic push >+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" > #endif >-// NOTE: ICU's unorm_quickCheck and unorm_normalize functions are deprecated in some SDKs. >+// NOTE: ICU's unorm_quickCheck and unorm_normalize functions are deprecated. > > Vector<uint8_t> TextEncoding::encode(StringView text, UnencodableHandling handling) const > { >@@ -112,8 +112,8 @@ Vector<uint8_t> TextEncoding::encode(StringView text, UnencodableHandling handli > return newTextCodec(*this)->encode(StringView { source, sourceLength }, handling); > } > >-#if COMPILER(CLANG) >-#pragma clang diagnostic pop >+#if COMPILER(GCC_OR_CLANG) >+#pragma GCC diagnostic pop > #endif > > const char* TextEncoding::domName() const >diff --git a/Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp b/Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp >index d1e4fcc515c281b482c5428bf27207ef29ee4be4..b052f878b1a2116167fd7eef03ec676914efde00 100644 >--- a/Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp >+++ b/Source/WebKit/Platform/IPC/glib/GSocketMonitor.cpp >@@ -51,7 +51,7 @@ void GSocketMonitor::start(GSocket* socket, GIOCondition condition, RunLoop& run > m_source = adoptGRef(g_socket_create_source(socket, condition, m_cancellable.get())); > g_source_set_name(m_source.get(), "[WebKit] Socket monitor"); > m_callback = WTFMove(callback); >- g_source_set_callback(m_source.get(), reinterpret_cast<GSourceFunc>(socketSourceCallback), this, nullptr); >+ g_source_set_callback(m_source.get(), reinterpret_cast<GSourceFunc>(reinterpret_cast<GCallback>(socketSourceCallback)), this, nullptr); > g_source_set_priority(m_source.get(), RunLoopSourcePriority::RunLoopDispatcher); > g_source_attach(m_source.get(), runLoop.mainContext()); > } >diff --git a/Source/WebKit/Shared/API/glib/WebKitContextMenu.cpp b/Source/WebKit/Shared/API/glib/WebKitContextMenu.cpp >index 5ca10af8dff080cc0dc5041db13a374171a0b451..86c9c0b2da06a18ccc68ded7f06b9413455c6545 100644 >--- a/Source/WebKit/Shared/API/glib/WebKitContextMenu.cpp >+++ b/Source/WebKit/Shared/API/glib/WebKitContextMenu.cpp >@@ -136,7 +136,7 @@ WebKitContextMenu* webkit_context_menu_new() > WebKitContextMenu* webkit_context_menu_new_with_items(GList* items) > { > WebKitContextMenu* menu = webkit_context_menu_new(); >- g_list_foreach(items, reinterpret_cast<GFunc>(g_object_ref_sink), 0); >+ g_list_foreach(items, reinterpret_cast<GFunc>(reinterpret_cast<GCallback>(g_object_ref_sink)), 0); > menu->priv->items = g_list_copy(items); > > return menu; >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 2f5e3475708ec7396e41ef14b60e67dbb920f332..bdb8a35dded52be202b435c08be0c04ee0d0ee89 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,17 @@ >+2018-05-08 Michael Catanzaro <mcatanzaro@igalia.com> >+ >+ [WPE] Build cleanly with GCC 8 and ICU 60 >+ https://bugs.webkit.org/show_bug.cgi?id=185462 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/CMakeLists.txt: Fix weird build failure, we were missing a directory. Not >+ sure why this was never noticed until now or why the bots are OK. >+ * gtk/jhbuild.modules: Add upstream patch to avoid warnings inside G_DEFINE_TYPE. >+ * gtk/patches/glib-cast-function-type.patch: Added. >+ * wpe/jhbuild.modules: Add upstream patch to avoid warnings inside G_DEFINE_TYPE. >+ * wpe/patches/glib-cast-function-type.patch: Added. >+ > 2018-05-08 Wenson Hsieh <wenson_hsieh@apple.com> > > Consolidate WebContentReaderIOS and WebContentReaderMac into WebContentReaderCocoa >diff --git a/Tools/TestWebKitAPI/CMakeLists.txt b/Tools/TestWebKitAPI/CMakeLists.txt >index eb78e9a8c7fb76680f8f9af49e607a74540a30dd..10f8fcafc05aa7d8e770f835e92ccee881857672 100644 >--- a/Tools/TestWebKitAPI/CMakeLists.txt >+++ b/Tools/TestWebKitAPI/CMakeLists.txt >@@ -178,6 +178,7 @@ include_directories( > ${WEBKIT_DIR}/Shared/Plugins > ${WEBKIT_DIR}/UIProcess > ${WEBKIT_DIR}/UIProcess/API >+ ${WEBKIT_DIR}/UIProcess/API/C > ${WEBKIT_DIR}/WebProcess/InjectedBundle > ${WEBKIT_DIR}/WebProcess/InjectedBundle/API/c > ) >diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules >index 134c64c4a3cc9c99053f842319b9c749ec4ff6b7..06b31870618668787655a1e3a60748b81684998f 100644 >--- a/Tools/gtk/jhbuild.modules >+++ b/Tools/gtk/jhbuild.modules >@@ -218,6 +218,7 @@ > hash="sha256:bb89e5c5aad33169a8c7f28b45671c7899c12f74caf707737f784d7102758e6c"> > <!-- This patch landed in glib-2-54 branch and will be available in 2.54.3. --> > <patch file="glib-gtester-do-not-consider-skipped-tests-as-failures.patch" strip="1"/> >+ <patch file="glib-cast-function-type.patch" strip="1"/> > </branch> > </autotools> > >diff --git a/Tools/gtk/patches/glib-cast-function-type.patch b/Tools/gtk/patches/glib-cast-function-type.patch >new file mode 100644 >index 0000000000000000000000000000000000000000..732877d6b20a214471ddfcb1d28b058e36a42c4f >--- /dev/null >+++ b/Tools/gtk/patches/glib-cast-function-type.patch >@@ -0,0 +1,54 @@ >+From c1f5e52844c3bf503aca8881b6af68f78f028b4d Mon Sep 17 00:00:00 2001 >+From: Lubomir Rintel <lkundrak@v3.sk> >+Date: Wed, 7 Feb 2018 17:27:54 +0000 >+Subject: [PATCH] gtype: cast *_init functions to void(*)(void) first >+ >+The *_init() functions have prototypes incompatible with *InitFunc types they >+are being cast to. This upsets GCC 8's -Wcast-function-type that's enabled by >+default with -Wextra. >+ >+Let's not have the public header files emit a warning and neutralize it by >+doing a void(*)(void) cast first. >+ >+https://bugzilla.gnome.org/show_bug.cgi?id=793272 >+--- >+ gobject/gtype.h | 8 ++++---- >+ 1 file changed, 4 insertions(+), 4 deletions(-) >+ >+diff --git a/gobject/gtype.h b/gobject/gtype.h >+index f771c07..608efb2 100644 >+--- a/gobject/gtype.h >++++ b/gobject/gtype.h >+@@ -1790,7 +1790,7 @@ guint g_type_get_type_registration_serial (void); >+ */ >+ #define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \ >+ const GInterfaceInfo g_implement_interface_info = { \ >+- (GInterfaceInitFunc) iface_init, NULL, NULL \ >++ (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \ >+ }; \ >+ g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ >+ } >+@@ -1974,9 +1974,9 @@ type_name##_get_type (void) \ >+ g_type_register_static_simple (TYPE_PARENT, \ >+ g_intern_static_string (#TypeName), \ >+ sizeof (TypeName##Class), \ >+- (GClassInitFunc) type_name##_class_intern_init, \ >++ (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \ >+ sizeof (TypeName), \ >+- (GInstanceInitFunc) type_name##_init, \ >++ (GInstanceInitFunc)(void (*)(void)) type_name##_init, \ >+ (GTypeFlags) flags); \ >+ { /* custom code follows */ >+ #define _G_DEFINE_TYPE_EXTENDED_END() \ >+@@ -2008,7 +2008,7 @@ type_name##_get_type (void) \ >+ g_type_register_static_simple (G_TYPE_INTERFACE, \ >+ g_intern_static_string (#TypeName), \ >+ sizeof (TypeName##Interface), \ >+- (GClassInitFunc)type_name##_default_init, \ >++ (GClassInitFunc)(GVoidFunc)type_name##_default_init, \ >+ 0, \ >+ (GInstanceInitFunc)NULL, \ >+ (GTypeFlags) 0); \ >+-- >+libgit2 0.27.0 >+ >diff --git a/Tools/wpe/jhbuild.modules b/Tools/wpe/jhbuild.modules >index 1090467ba37bf2d826530025c0f107c7e5ba3a02..85d91455d47620a321ab721846a6160e2872e72b 100644 >--- a/Tools/wpe/jhbuild.modules >+++ b/Tools/wpe/jhbuild.modules >@@ -73,6 +73,7 @@ > hash="sha256:963fdc6685dc3da8e5381dfb9f15ca4b5709b28be84d9d05a9bb8e446abac0a8"> > <patch file="gdate-suppress-string-format-literal-warning.patch" strip="1"/> > <patch file="glib-revert-wakeup-changes.patch" strip="1"/> >+ <patch file="glib-cast-function-type.patch" strip="1"/> > </branch> > </autotools> > >diff --git a/Tools/wpe/patches/glib-cast-function-type.patch b/Tools/wpe/patches/glib-cast-function-type.patch >new file mode 100644 >index 0000000000000000000000000000000000000000..732877d6b20a214471ddfcb1d28b058e36a42c4f >--- /dev/null >+++ b/Tools/wpe/patches/glib-cast-function-type.patch >@@ -0,0 +1,54 @@ >+From c1f5e52844c3bf503aca8881b6af68f78f028b4d Mon Sep 17 00:00:00 2001 >+From: Lubomir Rintel <lkundrak@v3.sk> >+Date: Wed, 7 Feb 2018 17:27:54 +0000 >+Subject: [PATCH] gtype: cast *_init functions to void(*)(void) first >+ >+The *_init() functions have prototypes incompatible with *InitFunc types they >+are being cast to. This upsets GCC 8's -Wcast-function-type that's enabled by >+default with -Wextra. >+ >+Let's not have the public header files emit a warning and neutralize it by >+doing a void(*)(void) cast first. >+ >+https://bugzilla.gnome.org/show_bug.cgi?id=793272 >+--- >+ gobject/gtype.h | 8 ++++---- >+ 1 file changed, 4 insertions(+), 4 deletions(-) >+ >+diff --git a/gobject/gtype.h b/gobject/gtype.h >+index f771c07..608efb2 100644 >+--- a/gobject/gtype.h >++++ b/gobject/gtype.h >+@@ -1790,7 +1790,7 @@ guint g_type_get_type_registration_serial (void); >+ */ >+ #define G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init) { \ >+ const GInterfaceInfo g_implement_interface_info = { \ >+- (GInterfaceInitFunc) iface_init, NULL, NULL \ >++ (GInterfaceInitFunc)(void (*)(void)) iface_init, NULL, NULL \ >+ }; \ >+ g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \ >+ } >+@@ -1974,9 +1974,9 @@ type_name##_get_type (void) \ >+ g_type_register_static_simple (TYPE_PARENT, \ >+ g_intern_static_string (#TypeName), \ >+ sizeof (TypeName##Class), \ >+- (GClassInitFunc) type_name##_class_intern_init, \ >++ (GClassInitFunc)(void (*)(void)) type_name##_class_intern_init, \ >+ sizeof (TypeName), \ >+- (GInstanceInitFunc) type_name##_init, \ >++ (GInstanceInitFunc)(void (*)(void)) type_name##_init, \ >+ (GTypeFlags) flags); \ >+ { /* custom code follows */ >+ #define _G_DEFINE_TYPE_EXTENDED_END() \ >+@@ -2008,7 +2008,7 @@ type_name##_get_type (void) \ >+ g_type_register_static_simple (G_TYPE_INTERFACE, \ >+ g_intern_static_string (#TypeName), \ >+ sizeof (TypeName##Interface), \ >+- (GClassInitFunc)type_name##_default_init, \ >++ (GClassInitFunc)(GVoidFunc)type_name##_default_init, \ >+ 0, \ >+ (GInstanceInitFunc)NULL, \ >+ (GTypeFlags) 0); \ >+-- >+libgit2 0.27.0 >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
clopez
:
review+
clopez
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185462
:
339927
| 339928