frame theory, was pointer madness

NZG
2006-01-26T19:55:38Z

Lets see if I have this right.
Assuming a linked list with 5 frames, they should look like this

level description
-1 sentinal frame(virtual)
0 youngest frame (the deepest function call and current frame)
1 older
2 even older
3 oldest

And the list should look like this

prev->frame->next

NULL->3->2->1->0->-1->-1->-1........

I think, and I have yet to successfully verify this, that the highest level
frame should have an id of zero, or at least should.

Normal gdb appears to work by caching the frame of the highest level to a NULL
prev value, which appears to be happening somewhere when the frame first
enters existance. In the case of a gdbremote connection this should be on
connection to the remote server. When frame 0 is the highest and lowest real
level it will "unwind" frame zero by accessing -1. which should in turn
actually read the registers from remote device. Then ->black magic - black
magic -> gdb realizes there is no higher level frame and caches a NULL there.

Now the magic.

NZG