Re: [dpdk-dev] [PATCH v2] devtools: check %l format specifier
From: Thomas Monjalon <hidden>
Date: 2021-05-21 13:09:42
21/05/2021 14:01, Ferruh Yigit:
On 5/19/2021 8:24 PM, Thomas Monjalon wrote:quoted
From: Ferruh Yigit <redacted> %lx or %llx tend to be wrong for 32-bit platform if used for fixed size variable like uint64_t. A checkpatch warning will avoid this common mistake. Signed-off-by: Ferruh Yigit <redacted> Signed-off-by: Thomas Monjalon <redacted> --- v2: proposal to reword the message and comment --- + # check %l or %ll format specifier + awk -v FOLDERS='lib drivers app examples' \ + -v EXPRESSIONS='%ll*[xud]' \ + -v RET_ON_FAIL=1 \ + -v MESSAGE='Using %l format, should it be %PRI*64?' \ + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ + "$1" || res=1Using the %l or %ll format specifier is correct when the variable type is "long int" or "long long int", it is only wrong if the variable type is fixed size like 'unit64_t'. My concern is above warning log may cause people change the correct usage. That was why I tried to make wording less strict, more like a reminder to double check the usage.
This is a question now: "should it be", why do you think it is strict?
If we can check that format specifier is used for 'unit64_t' variable, that will be the best solution but that is very hard to do. Should we add a little more information to the message to prevent false hit on the correct usage?
Your message was: "Please check %llx usage which tends to be wrong most of the times" Mine: "Using %l format, should it be %PRI*64?" Trying to give more info about what can be wrong while keeping short: "Using %l format, is it a long variable or should it be %PRI*64?