------- Comment #4 from nm127 at freemail dot hu 2008-09-14 05:32 ------- (In reply to comment #3) > char* y __attribute__ ((__section__(".xxx_section"))) = "Hello World!"; > > That only puts the pointer variable y into that section and not the string.
Exatly that is my problem. So the pointer variable y goes to section .xxx_section, but the actual string not. And I do not know any possibility to specify that the "Hello World!" string should also go to .xxx_section. For example I expect that in case of the following two lines the "Hello World!" string itself should be stored in section .xxx_section: char* z = __attribute__ ((__section__(".xxx_section"))) "Hello World!"; char* w = "Hello World!" __attribute__ ((__section__(".xxx_section"))); What I get for both lines is an error message: $ gcc -Wall test.c test.c:5: error: expected expression before '__attribute__' test.c:6: error: expected ',' or ';' before '__attribute__' Also, the problem gets complicated when a complete structure is initialized and it has some string fields: typedef struct { int x; int y; char* str; } s; s a __attribute__ ((__section__(".xxx_section"))) = { 0x11223344, 0x55667788, "string of the initialized struct" }; int main() { return 0; } Now we get the following sections: $ objdump -s a.out a.out: file format elf32-i386 [...] Contents of section .rodata: 8048448 03000000 01000200 73747269 6e67206f ........string o 8048458 66207468 6520696e 69746961 6c697a65 f the initialize 8048468 64207374 72756374 00 d struct. [...] Contents of section .xxx_section: 804957c 44332211 88776655 50840408 D3"..wfUP... My expectation is that if I specify that the structure should be stored in .xxx_section than the string itself should also be stored in .xxx_section. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37506