Clarification on section variable attribute usage [try #2]

Franck Bui-Huu vagabon.xyz@gmail.com
Mon Dec 10 21:05:00 GMT 2007


[ example updated ]

Hi,

Since at least 3.4, the GCC manual says:

     Use the `section' attribute with an _initialized_ definition of a
     _global_ variable, as shown in the example.  GCC issues a warning
     and otherwise ignores the `section' attribute in uninitialized
     variable declarations.

but this doesn't seem correct.

For example compiling the following tiny program:

	int foo __attribute__ ((__section__ (".init.data")));
	
	int main(int argc, char **argv)
	{
	        foo = 4;
	        return 0;
	}

produces no warning and the section attribute is not ignored at all:

	$ readelf -S a.out | grep -A1 init.data
	[24] .init.data        PROGBITS         000000000060080c  0000080c
	0000000000000004  0000000000000000  WA       0     0     4

This is with 4.1.2 from fedora, but I guess other GCC give the same result.

Could anybody clarify this point ?

Thanks,
		Franck



More information about the Gcc mailing list