On 01/15/2015 06:47 AM, Jan Hubicka wrote: >> Hello. >> >> I've just finished successfully chromium LTO build and there's list of >> mainly -Wodr warnings. >> I think some of them are false positives? > > What of those you consider to be false? > I wonder if we can print just type name so we avoid using the wrong "struct" > in place of class... >> >> Thanks, >> Martin > >> ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: >> warning: type ???struct WebCryptoEcKeyImportParams??? violates one >> definition rule [-Wodr] >> class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { >> ^ >> ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: >> note: a different type is defined in another translation unit >> class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { >> ^ >> ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:307:0: >> note: the first difference of corresponding definitions is field >> ???m_namedCurve??? >> const WebCryptoNamedCurve m_namedCurve; >> ^ >> ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: >> note: a field of same name but different type is defined in another >> translation unit >> class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { >> ^ > > The line info seems wrong here though. >> ../../third_party/icu/source/common/unicode/bytestream.h:48:0: note: virtual >> method ???_ZTIN6icu_528ByteSinkE??? >> class U_COMMON_API ByteSink : public UMemory { >> ^ >> <built-in>: note: ought to match virtual method ???__cxa_pure_virtual??? but >> does not > > This message also should be sanitized - we probably want to special case > cxa_pure_virtual... > > Honza >> In function ???__fread_alias???, >> inlined from >> ???_ZN21SafeBrowsingStoreFile13CheckValidityEv.part.41.constprop??? at >> ../../chrome/browser/safe_browsing/safe_browsing_store_file.cc:611:0: >> /usr/include/bits/stdio2.h:290:0: warning: call to ???__fread_chk_warn??? >> declared with attribute warning: fread called with bigger size * nmemb than >> length of destination buffer >> return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream); >> ^ >> /usr/include/bits/stdio2.h:290:0: warning: call to ???__fread_chk_warn??? >> declared with attribute warning: fread called with bigger size * nmemb than >> length of destination buffer >> In function ???__read_alias???, >> inlined from ???GetAppOutputInternal.constprop??? at >> ../../base/process/launch_posix.cc:613:0: >> /usr/include/bits/unistd.h:39:0: warning: call to ???__read_chk_warn??? >> declared with attribute warning: read called with bigger length than size of >> the destination buffer >> return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf)); >> ^ >> >
Hello. There's updated list for Chromium built with LTO. Martin
../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: warning: type ‘struct WebCryptoEcKeyImportParams’ violates one definition rule [-Wodr] class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { ^ ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: note: a different type is defined in another translation unit class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { ^ ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:307:0: note: the first difference of corresponding definitions is field ‘m_namedCurve’ const WebCryptoNamedCurve m_namedCurve; ^ ../../third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h:295:0: note: a field of same name but different type is defined in another translation unit class WebCryptoEcKeyImportParams : public WebCryptoAlgorithmParams { ^ ../../third_party/WebKit/public/platform/WebCryptoAlgorithm.h:78:0: note: type ‘const WebCryptoNamedCurve’ should match type ‘const WebCryptoNamedCurve’ enum WebCryptoNamedCurve { ^ ../../third_party/WebKit/public/platform/WebCryptoAlgorithm.h:79:0: note: the incompatible type is defined here WebCryptoNamedCurveP256, ^ ../../ui/events/event.h:631:0: warning: type ‘struct KeyEvent’ violates one definition rule [-Wodr] class EVENTS_EXPORT KeyEvent : public Event { ^ ../../ui/events/event.h:631:0: note: a different type is defined in another translation unit class EVENTS_EXPORT KeyEvent : public Event { ^ ../../ui/events/event.h:765:0: note: the first difference of corresponding definitions is field ‘code_’ DomCode code_; ^ ../../ui/events/event.h:631:0: note: a field of same name but different type is defined in another translation unit class EVENTS_EXPORT KeyEvent : public Event { ^ ../../ui/events/event.h:29:0: note: type ‘DomCode’ should match type ‘DomCode’ enum class DomCode; ^ ../../ui/events/keycodes/dom4/keycode_converter_data.h:17:0: note: the incompatible type is defined here USB_KEYMAP_DECLARATION { ^ ../../third_party/icu/source/i18n/unicode/fieldpos.h:106:0: warning: virtual table of type ‘struct FieldPosition’ violates one definition rule class U_I18N_API FieldPosition : public UObject { ^ ../../third_party/icu/source/i18n/unicode/fieldpos.h:106:0: note: the conflicting type defined in another translation unit class U_I18N_API FieldPosition : public UObject { ^ ../../third_party/icu/source/i18n/unicode/fieldpos.h:106:0: note: virtual method ‘_ZTIN6icu_5213FieldPositionE’ class U_I18N_API FieldPosition : public UObject { ^ ../../third_party/icu/source/i18n/format.cpp:125:0: note: ought to match virtual method ‘__comp_dtor ’ but does not Format::format(const Formattable& /* unused obj */, ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: warning: virtual table of type ‘struct UObject’ violates one definition rule class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: the conflicting type defined in another translation unit class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/unicode/uobject.h:221:0: note: virtual method ‘_ZTIN6icu_527UObjectE’ class U_COMMON_API UObject : public UMemory { ^ ../../third_party/icu/source/common/uobject.cpp:92:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UObject::~UObject() {} ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: warning: virtual table of type ‘struct UnicodeString’ violates one definition rule class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: the conflicting type defined in another translation unit class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unicode/unistr.h:245:0: note: virtual method ‘_ZTIN6icu_5213UnicodeStringE’ class U_COMMON_API UnicodeString : public Replaceable ^ ../../third_party/icu/source/common/unistr.cpp:398:0: note: ought to match virtual method ‘__comp_dtor ’ but does not UnicodeString::~UnicodeString() ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: warning: virtual table of type ‘struct Replaceable’ violates one definition rule class U_COMMON_API Replaceable : public UObject { ^ ../../third_party/icu/source/common/unicode/rep.h:71:0: note: the conflicting type defined in another translation unit class U_COMMON_API Replaceable : public UObject { ^ <built-in>: note: virtual method ‘__cxa_pure_virtual’ ../../third_party/icu/source/common/uobject.cpp:94:0: note: ought to match virtual method ‘getDynamicClassID’ but does not UClassID UObject::getDynamicClassID() const { return NULL; } ^ ../../third_party/icu/source/common/unicode/bytestream.h:48:0: warning: virtual table of type ‘struct ByteSink’ violates one definition rule class U_COMMON_API ByteSink : public UMemory { ^ ../../third_party/icu/source/common/unicode/bytestream.h:48:0: note: the conflicting type defined in another translation unit class U_COMMON_API ByteSink : public UMemory { ^ ../../third_party/icu/source/common/unicode/bytestream.h:48:0: note: virtual method ‘_ZTIN6icu_528ByteSinkE’ class U_COMMON_API ByteSink : public UMemory { ^ <built-in>: note: ought to match virtual method ‘__cxa_pure_virtual’ but does not