This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

frame theory, was pointer madness


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]