This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/40112] New: C++, __attribute__((__progmem__)) lost in typedefs.
- From: "sb-sf at users dot sourceforge dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 May 2009 10:20:37 -0000
- Subject: [Bug c++/40112] New: C++, __attribute__((__progmem__)) lost in typedefs.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
data incorrectly placed into .data or .rodata instead of .progmem. This makes
impossible using avr-libc predefined types (avr/pgmspace.h).
test.cpp:
char __attribute__((__progmem__)) Test1[] = "test1";
char const __attribute__((__progmem__)) Test2[] = "test2";
typedef char __attribute__((__progmem__)) prog_char;
prog_char Test3[] = "Test3";
prog_char const Test4[] = "Test4";
void const * array[] =
{
Test1, Test2, Test3, Test4
};
listing:
8 .global Test1
9 .section .progmem.data,"a",@progbits
12 Test1:
13 0000 7465 7374 .string "test1"
13 3100
14 .global Test3
15 .data
18 Test3:
19 0000 5465 7374 .string "Test3"
19 3300
20 .global array
23 array:
24 0006 0000 .word Test1
25 0008 0000 .word _ZL5Test2
26 000a 0000 .word Test3
27 000c 0000 .word _ZL5Test4
28 .section .progmem.data
31 _ZL5Test2:
32 0006 7465 7374 .string "test2"
32 3200
33 .data
36 _ZL5Test4:
37 000e 5465 7374 .string "Test4"
37 3400
First two forms leads to correct placement, but generates incorrect warning
(bug 34734)
--
Summary: C++, __attribute__((__progmem__)) lost in typedefs.
Product: gcc
Version: 4.3.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sb-sf at users dot sourceforge dot net
GCC host triplet: x86
GCC target triplet: AVR
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40112