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