If I read you correctly, you want to protest if type does not strictly match
format directive.

 

This is something even gcc does NOT ensure by default:

 

#include <stdio.h>

#include <stdlib.h>

 

int

main() {

        int i = 256;

        const char* s = "Hello";

        const void* p = s;

 

        printf("%x\n", i);

        printf("%u %s\n", i, p);

}

 

 

$ gcc -std=c11  foo.c

$ => Ok

 

Only -Wformat (or -Wall) shows a warning on the 2nd printf, printf of i (a
signed) is always Ok.

 

$ gcc -std=c11 -Wall foo.c

foo.c: In function 'main':

foo.c:11:21: warning: format '%s' expects argument of type 'char *', but
argument 3 has type 'const void *' [-Wformat=]

         printf("%u %s\n", i, p);
~^
%p        

 

-----Original Message-----
From: Pascal Cuoq [mailto:c...@trust-in-soft.com] 
Sent: Friday, June 21, 2019 15:17
To: jull...@eligis.com; tinycc-devel@nongnu.org
Subject: Re: [Tinycc-devel] match formats and arguments exactly

 

 

> On 21 Jun 2019, at 14:56, Christian Jullien <eli...@orange.fr> wrote:

> 

> This is a valuable check but IMHO, it should be controlled by -Wformat (as

> GNU gcc) and set of false by default.

> Otherwise, I suspect tcc users will have a lot a new warnings.

 

I'm not implementing a new warning in TCC. I am only ensuring, by following
C11 7.21.6.1:8 to the letter, that the TCC source code passes the strictest
such checks that a C compiler could have, and also that a very exotic C
compiler does not produce a non-functional binary when compiling TCC.

 

Considering the amount of code that good warnings represent, I think that a
C compiler can either be tiny, or provide helpful warnings. The patches I
have been sending, including the last one, only make TCC not exhibit
undefined behavior, a more manageable goal that only requires small changes
and do not make TCC significantly larger.

 

Pascal

_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to