This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] Dealing with ODR violations in GCC
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Martin Liška <mliska at suse dot cz>
- Cc: gcc at gcc dot gnu dot org
- Date: Thu, 15 Jan 2015 06:47:59 +0100
- Subject: Re: [RFC] Dealing with ODR violations in GCC
- Authentication-results: sourceware.org; auth=none
- References: <20140912054042 dot GB10910 at kam dot mff dot cuni dot cz> <54B66FB9 dot 8050607 at suse dot cz>
> 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));
> ^
>