WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
143773
[W32] Many warnings about printf format all over the code when building with MinGW
https://bugs.webkit.org/show_bug.cgi?id=143773
Summary
[W32] Many warnings about printf format all over the code when building with ...
LRN
Reported
2015-04-15 06:34:44 PDT
"printf" means "gnu_printf" when compiling for non-Windows and means "ms_printf" when compiling for Windows. The code, however, does seems to be assuming gnu_printf (judging by the use of %z and %l).
Attachments
Change printf format attribute to gnu_printf, MinGW compatibility
(4.58 KB, patch)
2015-04-15 10:18 PDT
,
LRN
darin
: review-
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
LRN
Comment 1
2015-04-15 10:18:24 PDT
Created
attachment 250820
[details]
Change printf format attribute to gnu_printf, MinGW compatibility "printf" means "gnu_printf" when compiling for non-Windows and means "ms_printf" when compiling for Windows. The code, however, does seems to be assuming gnu_printf (judging by the use of %z and %l). Fix this by explicitly specifying gnu_printf format style. To ensure that gnu-compatible printf implementation is used, compile with -D__USE_MINGW_ANSI_STDIO=1, it will automagically turn all *printf() invocations into __mingw_*printf(), which are gnu-compatible. Only one function that won't be turned is _vsnprintf(). Ifdef its use and call vsnprintf() instead when __USE_MINGW_ANSI_STDIO != 0.
Darin Adler
Comment 2
2015-04-15 10:29:21 PDT
Comment on
attachment 250820
[details]
Change printf format attribute to gnu_printf, MinGW compatibility View in context:
https://bugs.webkit.org/attachment.cgi?id=250820&action=review
> Source/WTF/ChangeLog:7 > + "printf" means "gnu_printf" when compiling for non-Windows and means > + "ms_printf" when compiling for Windows. The code, however, does seems to be > + assuming gnu_printf (judging by the use of %z and %l).
We don’t need to use %z and %l; where do you see those? This patch might makes things better for MinGW, but they don’t resolve the problem for Windows so I’d prefer to actually tackle that problem.
LRN
Comment 3
2015-04-15 10:37:41 PDT
(In reply to
comment #2
)
> Comment on
attachment 250820
[details]
> Change printf format attribute to gnu_printf, MinGW compatibility > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=250820&action=review
> > > Source/WTF/ChangeLog:7 > > + "printf" means "gnu_printf" when compiling for non-Windows and means > > + "ms_printf" when compiling for Windows. The code, however, does seems to be > > + assuming gnu_printf (judging by the use of %z and %l). > > We don’t need to use %z and %l; where do you see those? This patch might > makes things better for MinGW, but they don’t resolve the problem for > Windows so I’d prefer to actually tackle that problem.
../webkitgtk-2.4.8/Source/WTF/wtf/FilePrintStream.cpp: In member function 'virtual void WTF::FilePrintStream::vprintf(const char*, va_list)': ../webkitgtk-2.4.8/Source/WTF/wtf/FilePrintStream.cpp:55:37: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] vfprintf(m_file, format, argList); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp: In function 'void WTF::printInternal(WTF::PrintStream&, long long int)': ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp:124:29: warning: unknown conversion type character 'l' in format [-Wformat=] out.printf("%lld", value); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp:124:29: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp: In function 'void WTF::printInternal(WTF::PrintStream&, long long unsigned int)': ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp:129:29: warning: unknown conversion type character 'l' in format [-Wformat=] out.printf("%llu", value); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/PrintStream.cpp:129:29: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/WTF/wtf/StringPrintStream.cpp: In member function 'virtual void WTF::StringPrintStream::vprintf(const char*, va_list)': ../webkitgtk-2.4.8/Source/WTF/wtf/StringPrintStream.cpp:60:79: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] vsnprintf(m_buffer + m_next, m_size - m_next, format, firstPassArgList); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/StringPrintStream.cpp:73:70: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] vsnprintf(m_buffer + m_next, m_size - m_next, format, argList); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/text/WTFString.cpp: In static member function 'static WTF::String WTF::String::format(const char*, ...)': ../webkitgtk-2.4.8/Source/WTF/wtf/text/WTFString.cpp:463:48: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] int result = vsnprintf(&ch, 1, format, args); ^ ../webkitgtk-2.4.8/Source/WTF/wtf/text/WTFString.cpp:482:57: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] vsnprintf(buffer.data(), buffer.size(), format, args); ^ ../webkitgtk-2.4.8/Source/WebCore/platform/sql/SQLiteFileSystem.cpp: In static member function 'static WTF::String WebCore::SQLiteFileSystem::getFileNameForNewDatabase(const WTF::String&, const WTF::String&, const WTF::String&, WebCore::SQLiteDatabase*)': ../webkitgtk-2.4.8/Source/WebCore/platform/sql/SQLiteFileSystem.cpp:76:91: warning: unknown conversion type character 'l' in format [-Wformat=] fileName = pathByAppendingComponent(dbDir, String::format("%016" PRIx64 ".db", seq)); ^ ../webkitgtk-2.4.8/Source/WebCore/platform/sql/SQLiteFileSystem.cpp:76:91: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/WebCore/platform/sql/SQLiteFileSystem.cpp:79:51: warning: unknown conversion type character 'l' in format [-Wformat=] return String::format("%016" PRIx64 ".db", seq); ^ ../webkitgtk-2.4.8/Source/WebCore/platform/sql/SQLiteFileSystem.cpp:79:51: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/JavaScriptCore/jsc.cpp: In member function 'JSC::StackVisitor::Status FunctionJSCStackFunctor::operator()(JSC::StackVisitor&)': ../webkitgtk-2.4.8/Source/JavaScriptCore/jsc.cpp:339:108: warning: unknown conversion type character 'z' in format [-Wformat=] m_trace.append(String::format(" %zu %s\n", visitor->index(), visitor->toString().utf8().data())); ^ ../webkitgtk-2.4.8/Source/JavaScriptCore/jsc.cpp:339:108: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'size_t {aka unsigned int}' [-Wformat=] ../webkitgtk-2.4.8/Source/JavaScriptCore/jsc.cpp:339:108: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp: In member function 'void WebCore::XMLDocumentParser::error(WebCore::XMLErrors::ErrorType, const char*, va_list)': ../webkitgtk-2.4.8/Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp:964:46: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] vsnprintf(m, sizeof(m) - 1, message, args); ^ In file included from ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:27:0: ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h: In member function 'void JSC::ARM64Disassembler::A64DOpcode::appendUnsignedImmediate64(uint64_t)': ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:175:42: warning: unknown conversion type character 'l' in format [-Wformat=] bufferPrintf("#0x%llx", immediate); ^ ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:175:42: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h: In member function 'void JSC::ARM64Disassembler::A64DOpcode::appendPCRelativeOffset(uint32_t*, int32_t)': ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:180:74: warning: unknown conversion type character 'l' in format [-Wformat=] bufferPrintf("0x%llx", reinterpret_cast<uint64_t>(pc + immediate)); ^ ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.h:180:74: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp: In member function 'void JSC::ARM64Disassembler::A64DOpcode::bufferPrintf(const char*, ...)': ../webkitgtk-2.4.8/Source/JavaScriptCore/disassembler/ARM64/A64DOpcode.cpp:162:110: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format] m_bufferOffset += vsnprintf(m_formatBuffer + m_bufferOffset, bufferSize - m_bufferOffset, format, argList); ^ In file included from ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/CodeProfile.cpp:32:0: ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/ProfileTreeNode.h: In member function 'void JSC::ProfileTreeNode::dumpInternal(unsigned int)': ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/ProfileTreeNode.h:102:89: warning: unknown conversion type character 'l' in format [-Wformat=] static_cast<long long>(entry->value.count() - entry->value.childCount())); ^ ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/ProfileTreeNode.h:102:89: warning: format '%s' expects argument of type 'char*', but argument 2 has type 'long long int' [-Wformat=] ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/ProfileTreeNode.h:102:89: warning: unknown conversion type character 'l' in format [-Wformat=] ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/ProfileTreeNode.h:102:89: warning: too many arguments for format [-Wformat-extra-args] ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/CodeProfile.cpp: In member function 'void JSC::CodeProfile::report()': ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/CodeProfile.cpp:183:83: warning: unknown conversion type character 'l' in format [-Wformat=] dataLogF("Total samples: %lld\n", static_cast<long long>(profile.childCount())); ^ ../webkitgtk-2.4.8/Source/JavaScriptCore/tools/CodeProfile.cpp:183:83: warning: too many arguments for format [-Wformat-extra-args]
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug