https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90441
Bug ID: 90441
Summary: [9 regression] corrupt debug info with LTO
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Keywords: needs-bisection
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: hoganmeier at gmail dot com
Target Milestone: ---
Originally occurred with arm-gcc 9.1
Reproduced it with Ubuntu 19.04 gcc 9.0, works with gcc 8.3.
Couldn't reduce it further.
mk20dx128.c:
__attribute__ ((section(".vectors"), used))
_VectorsFlash[100]=
{
};
main.cpp:
void yield();
int main()
{
yield();
}
yield.cpp:
int serial3_available() {}
struct HardwareSerial3 {
int available() { serial3_available(); }
};
HardwareSerial3 Serial3;
void yield()
{
serial3_available();
}
script.ld:
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 4K
}
SECTIONS
{
.text : {
. = 0;
KEEP(*(.vectors))
*(.text*)
} > FLASH = 0xFF
}
gcc-9 -o mk20dx128.c.o -c -flto -g -ffunction-sections -fdata-sections
-nostdlib -O2 teensy3/mk20dx128.c
g++-9 -o main.cpp.o -c -fno-exceptions -fno-rtti -flto -g -ffunction-sections
-fdata-sections -nostdlib -O2 teensy3/main.cpp
g++-9 -o yield.cpp.o -c -fno-exceptions -fno-rtti -flto -g -ffunction-sections
-fdata-sections -nostdlib -O2 yield.cpp
g++-9 -o firmware.elf -g -T script.ld -Wl,--gc-sections,--relax -O2 main.cpp.o
mk20dx128.c.o yield.cpp.o
nm -ClS --radix=d --size-sort firmware.elf
0000000000000224 0000000000000400 T _VectorsFlashnm: DWARF error: could not
find abbrev number 8
If you remove the 'HardwareSerial3 Serial3;' line the error becomes
DWARF error: info pointer extends beyond end of attributes