I have a strange crash shortly after launching SYS/BIOS.
The main code sets up the PLL's, EDC, DDR, UART and GPIO's, then prints a welcome message, then creates two tasks and then calls BIOS_start.
By changing the length of any string constant anywhere in the program by +/- 4 bytes, the code will either run without incident or hang forever shortly after starting the first task. All that the task has executed by then is one System_printf - and not the string whose length was changed. The next instruction is another System_printf, which never executes. From the stack dump, it appears to be hanging in ti_sysbios_knl_Clock_workFunc, called from ti_sysbios_BIOS_Module__state__V. Nothing beyond that on the stack.
I can put breakpoints at both System_printf calls. The first one executes, but appears to corrupt the stack, so never returns. With the breakpoint in place, I don't see the result of the even the first System_printf.
Looking at the map file, all sections are identical except the length of .const (the next section ends up at the same start address, because they appear to be aligned to a 16-byte boundary), and the only difference in .const is that a number of items have shifted address by 4 bytes. The order of some items changes, principally sysbios objects, but everything remains aligned to 4-byte boundaries.
It looks as if something in .const must be wrongly aligned - perhaps something needs to be on 8 or 16 byte boundaries and ends up on an odd 4-byte boundary?
I'm running xdc version 3.23.3.53 on a C6678