Question: at which version gcc started supporting -D_FORTIFY_SOURCE for c++ files?

2012-08-22 Thread Oleg Pekar (olpekar)
Hi,
I'm using gcc 4.1.2, it supports -D_FORTIFY_SOURCE option for c files but not 
for c++. I'm looking for gcc version number where support for this option in 
c++ files was added.

Thanks,
Oleg


RE: Question: at which version gcc started supporting -D_FORTIFY_SOURCE for c++ files?

2012-08-22 Thread Oleg Pekar (olpekar)
>On Wed, Aug 22, 2012 at 12:38 PM, Oleg Pekar (olpekar)  
>wrote:
>> I'm using gcc 4.1.2, it supports -D_FORTIFY_SOURCE option for c files but 
>> not for c++. I'm looking for gcc version number where support for this 
>> option in c++ files was added.

>I'm not sure how to answer your question, because -D_FORTIFY_SOURCE is not a 
>GCC feature.  It is a glibc feature.  It causes glibc to change some function 
>definitions to use features that are provided by GCC.
>As far as I know, all the _FORTIFY_SOURCE features that GCC provides are 
>available in both C and C++.

>So, please give us an example of something that fails with g++ and 
>-D_FORTIFY_SOURCE that you expect to work.

>Ian

I created a tiny program test.c:
#include 
int main()
{
char buf[4];
memcpy(buf, "1234", 5);
return 0;
}

Then I compile it with gcc 4.1.2 on Red Hat Linux 5.5. When I compile it as c 
file - gcc performs the check specified by FORTIFY_SOURCE, when I compile it as 
c++ file - it doesn't. 

dev /tmp>gcc -x c -D_FORTIFY_SOURCE=2 -O2 -o test.exe -lstdc++ test.c 
test.c: In function \u2018main\u2019:
test.c:6: warning: call to __builtin___memcpy_chk will always overflow 
destination buffer

dev /tmp>gcc -x c++ -D_FORTIFY_SOURCE=2 -O2 -o test.exe -lstdc++ test.c 
dev /tmp>