1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 21:10:27 +02:00

Stack traces skip RTL boot frames

* libguile/frames.c (frame-previous)
* libguile/stacks.c (make-stack): Skip RTL boot frames.
This commit is contained in:
Andy Wingo 2013-10-17 23:25:01 +02:00
parent 9d87158fdb
commit 361d0de285
2 changed files with 5 additions and 3 deletions

View file

@ -334,7 +334,8 @@ SCM_DEFINE (scm_frame_previous, "frame-previous", 1, 0, 0,
SCM_VM_FRAME_OFFSET (frame));
proc = scm_frame_procedure (frame);
if (SCM_PROGRAM_P (proc) && SCM_PROGRAM_IS_BOOT (proc))
if ((SCM_PROGRAM_P (proc) || SCM_RTL_PROGRAM_P (proc))
&& SCM_PROGRAM_IS_BOOT (proc))
goto again;
else
return frame;

View file

@ -1,5 +1,5 @@
/* A stack holds a frame chain
* Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation
* Copyright (C) 1996,1997,2000,2001, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@ -276,7 +276,8 @@ SCM_DEFINE (scm_make_stack, "make-stack", 1, 0, 1,
/* FIXME: is this even possible? */
if (scm_is_true (frame)
&& SCM_PROGRAM_P (scm_frame_procedure (frame))
&& (SCM_PROGRAM_P (scm_frame_procedure (frame))
|| SCM_RTL_PROGRAM_P (scm_frame_procedure (frame)))
&& SCM_PROGRAM_IS_BOOT (scm_frame_procedure (frame)))
frame = scm_frame_previous (frame);