Skip to content
Snippets Groups Projects
Commit fa77470b authored by dtc's avatar dtc
Browse files

Re-write of the x86 port debug support. This should give a significant

improvement in reliability necessary for breakpoint and single
stepping to have a chance, and has been tested in the experimental
code and works on FreeBSD and Linux.

The code object for a given return address in now located with the help
of the GC support function component_ptr_from_pc which can reliably
locate the code objects. This uses a forward search of the heap so is
rather slow - some caching will be needed for better performance.

The stack parsing has been re-written using a backtracking search to
improve the chance of finding a valid frame path given that the
control changes between C and Lisp conventions.  The x86-lra hack is
no longer necessary (was unreliable anyway) allowing x86 code to be
more compact. The return address is now handled as a SAP which is
acceptable because the code doesn't move with CGC, and GENCGC ensures
that code objects in the dynamic heap with return addresses on the
stack are not moved. However there are known problems under GENCGC
when return addresses are move off the stack during some breakpoint
operations in which case the code object may move.
parent 3edae40b
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment