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

Reply via email to