This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/53493] New: [4.7 regression] Compiling with -Os excludes PROGMEM array from generated object file (__attribute__((__progmem__)))
- From: "jwatte at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 26 May 2012 01:32:16 +0000
- Subject: [Bug c++/53493] New: [4.7 regression] Compiling with -Os excludes PROGMEM array from generated object file (__attribute__((__progmem__)))
- Auto-submitted: auto-generated
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53493
Bug #: 53493
Summary: [4.7 regression] Compiling with -Os excludes PROGMEM
array from generated object file
(__attribute__((__progmem__)))
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: jwatte@gmail.com
I'm using AVR-GCC 4.7.0-1 from Arch Linux, if it matters.
When compiling with -Os (which is pretty much a must for most source code,) an
exported data array declared as PROGMEM will be removed by the compiler!
Compare without -Os:
Code:
$ avr-gcc -mmcu=atmega328p -c foo.cpp -o foo.o && avr-objdump -s foo.o
foo.o: file format elf32-avr
Contents of section .progmem.data:
0000 666f6f00 foo.
Contents of section .comment:
0000 00474343 3a202847 4e552920 342e372e .GCC: (GNU) 4.7.
0010 3000 0.
to with -Os:
Code:
$ avr-gcc -Os -mmcu=atmega328p -c foo.cpp -o foo.o && avr-objdump -s foo.o
foo.o: file format elf32-avr
Contents of section .comment:
0000 00474343 3a202847 4e552920 342e372e .GCC: (GNU) 4.7.
0010 3000 0.
Here is foo.cpp:
Code:
#include <avr/pgmspace.h>
unsigned char const foo[4] PROGMEM = { 'f', 'o', 'o', 0 };
Must I add some magic GNU make hack to my makefiles to not pass -Os for these
files? That's fairly cumbersome
Is this a known bug? Is there a patch?