[PATCH]: New warning option -Walloca

Ken Raeburn raeburn@raeburn.org
Sat Sep 1 21:45:00 GMT 2007


On Aug 31, 2007, at 17:58, Seongbae Park (박성배, 朴成培) wrote:
>> I think most large projects should have a common header if they don't
>> already.  It's just a good idea for so many reasons like this.   
>> But if you
>> don't have a common header, you might be able to stick
>> -Dalloca=dont_use_alloca in the Makefile.  That should still work  
>> in the
>> presence of system prototypes, it'll just declare alloca with the  
>> wrong
>> name and you'll have to depend on the linker to catch you.
>
> No. The system header will override your -D -
> if a system header or a library header uses alloca,
> it includes alloca.h and a typical alloca.h has #define for alloca
> which will happily override whatever's in -D.

If alloca.h is protected against multiple inclusions, use -include to  
pull in a header file that includes alloca.h and then redefines  
alloca as discussed.  But a redefinition without #undef should at  
least get a warning.

(And defining it to something like "dont_use_alloca dont_use_alloca"  
is more likely to trigger a compile-time syntax error than just  
defining it to "dont_use_alloca".  I've played around with poisoning  
identifiers via cpp hacks before...)

> And I'm just pointing out that the existing mechanism doesn't work
> for everybody.
> It would be the best If there's some easy way to make this work
> without changing the compiler, but I just don't see it.

Even if you add the compiler warning about uses of alloca, what's to  
stop someone from using "#pragma GCC diagnostic" to silence it, if  
they *really* want to get around it?

Ken



More information about the Gcc-patches mailing list