tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] match formats and arguments exactly


From: Christian Jullien
Subject: Re: [Tinycc-devel] match formats and arguments exactly
Date: Fri, 21 Jun 2019 15:33:24 +0200

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:address@hidden]
Sent: Friday, June 21, 2019 15:17
To: address@hidden; address@hidden
Subject: Re: [Tinycc-devel] match formats and arguments exactly

 

 

> On 21 Jun 2019, at 14:56, Christian Jullien <address@hidden> 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]