Definition of the AVR_MCU_VCD_SYMBOL macro contains a bug, which older gcc versions skip, but the newer catch.
For example with gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) :
atmega88_uart_echo.c:34:23: error: initialization of flexible array member in a nested context
{ AVR_MCU_VCD_SYMBOL("UDR0"), .what = (void*)&UDR0, },
The problem is that an array of avr_mmcu_vcd_trace_t initialized and its elements have different sizes.
Definition of the AVR_MCU_VCD_SYMBOL macro contains a bug, which older gcc versions skip, but the newer catch. For example with gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) : atmega88_uart_echo.c:34:23: error: initialization of flexible array member in a nested context { AVR_MCU_VCD_SYMBOL("UDR0"), .what = (void*)&UDR0, }, The problem is that an array of avr_mmcu_vcd_trace_t initialized and its elements have different sizes.