While debugging some gdb-related FAILs, I discovered that gcc's -fstack-check option effectively calls alloca() to adjust the stack pointer.
However, it doesn't mark the stack adjustment as FRAME_RELATED even when it's setting up the local variables for the function. In the case of rx-elf, for this testcase, the CFA for the function is defined in terms of the stack pointer - and thus is incorrect after the alloca call. My question is: who's fault is this? Should alloca() tell the debug stuff that the stack pointer has changed? Should it tell it to not use $sp at all? Should the debug stuff "just know" that $sp isn't a valid choice for the CFA? The testcase from gdb is pretty simple: void medium_frame () { char S [16384]; small_frame (); }