Compiler printf format checking

Zhengyu Gu zhengyu.gu at oracle.com
Thu Dec 12 06:11:20 PST 2013


We can change current PRT_FORMAT to %p to get compiler format checking 
to work, then replace %p with %8x or %16x in 
outputStream::do_vsnprintf(). I believe that some of tests do depend on 
the format.

Thanks,

-Zhengyu


On 12/11/2013 8:14 PM, Mikael Vidstedt wrote:
>
> Are we saying the gcc format checking ignores any qualifiers on %p, 
> yet correctly treats it as a pointer format? That is, if we use 
> something like "%08p", will gcc still recognize that as a pointer 
> format and look for a pointer argument (without complaining)?
>
> Cheers,
> Mikael
>
> On Dec 11, 2013, at 3:06 PM, John Rose <john.r.rose at oracle.com 
> <mailto:john.r.rose at oracle.com>> wrote:
>
>> On Dec 11, 2013, at 2:41 PM, Dmitry Samersoff 
>> <dmitry.samersoff at oracle.com <mailto:dmitry.samersoff at oracle.com>> wrote:
>>
>>> we can just use %p on all platforms
>>
>> That's clever.
>>
>> I do think we need to use an off-the-shelf static analyzer for the 
>> format strings.  There is only a tiny amount of room to maneuver 
>> within the confines of the language of printf format strings.
>>
>> There are probably several other fiddly details like this, such as 
>> "how do I format intptr_t" and "how do I format jlong" and maybe "how 
>> do I format an oop".  It may be possible to do some dodges like %p to 
>> get around those also.  (The [-+#] modifiers look tantalizing to me 
>> in this regard.)
>>
>> — John

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20131212/acf78ff2/attachment-0001.html 


More information about the hotspot-runtime-dev mailing list