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. I would be nice to have all manuals reflecting this too. Thanks ! -- Summary: The GCC manual about section variable attribute is incorrect Product: gcc Version: 4.2.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: web AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fbuihuu at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34443