------- Comment #4 from mschulze at ivs dot cs dot ovgu dot de 2010-06-09 09:16 ------- I found a way to place data in program memory for C++ without producing the annoying warnings. The trick is omiting __attribute__((__progmem__)) and instead always use __attribute__((section(".progmem.something"))) for placing your data into a special section beginning with ".progmem.". I tested this with different avr-g++ compiler versions (3.4.4, 4.1.1, 4.2.1, 4.3.3, 4.4.0, and 4.4.3), and it always results in the desired behavior.
Example: [mschu...@teeth tst]$ cat progmem.cpp static char __attribute((section(".progmem.something"))) str[]="program memory data"; const char* test() { return str; } [mschu...@teeth tst]$ /usr/bin/avr-g++ -Wall -mmcu=atmega1281 -c progmem.cpp [mschu...@teeth tst]$ /usr/bin/avr-g++ --version avr-g++ (GCC) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [mschu...@teeth tst]$ Regards, Michael -- mschulze at ivs dot cs dot ovgu dot de changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mschulze at ivs dot cs dot | |ovgu dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34734