[RFC] Dealing with ODR violations in GCC

Martin Liška mliska@suse.cz
Fri Feb 13 18:54:00 GMT 2015


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
-------------- next part --------------
../../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



More information about the Gcc mailing list