-
Notifications
You must be signed in to change notification settings - Fork 180
Description
Hi, I'm new to this low level stuff so sorry if I get something wrong.
I've been trying to work out how to do a frame pointer stack walk using r7 for some profiling but I've been having trouble working out when to stop the walk. It works fine until I get to <main>'s frame record, at which point the frame pointer points into the boot RAM which I don't seem to be able to read. Would it be reasonable to zero the frame pointer r7 in <Reset>?
Section 6.2.1.4 of the AAPCS32 states:
The end of the frame record chain is indicated by the address zero in the address for the previous frame.
so I think making this change would conform with that.
Environment
I've been using a Pico 2 with an embassy application to test.
The gdb commands I've been using for walking the stack are:
info registers r7
p/x *((addr + 0*4) as *u32)
and for getting return addresses:
info registers lr
p/x *((addr + 1*4) as *u32)