Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • dtc's avatar
    fa77470b
    Re-write of the x86 port debug support. This should give a significant · fa77470b
    dtc authored
    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.
    fa77470b
    History
    Re-write of the x86 port debug support. This should give a significant
    dtc authored
    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.