majia gm <gmmajia@xxxxxxxxx> writes: > I'm working on a non-mainstream RISC machine. I found that the > CFA(Canonical Frame Address) of a function as follows, is record > errorly in a location list. > > The origninal function is wrriten in C, and here's the objdump result. > > prologue: > stw.w lr, [sp-], 4 > sub sp, sp, #404 > > ... > > epilogue: > add sp, sp, #404 > cmovub pc, lr > > The CFA is discribed relatively to the stack pointer sp. But the > location list for CFA only noticed the adjustment of sp in the > prologue but ignored the one in the epilogue. > > I'm trying to figure out how this happened. But I'm not familiar with GCC. > > Could you give me some hints on how the location list of the CFA is generated? > Or is there any reference to the Dwarf generating machenism in GCC? I think you neglected to mention which version of gcc you are using. gcc only recently started generating good information for unwinding through an epilogue. I think it was in gcc 4.5 but not before. Ian