1.0.38.1: Fix undefined-function bug-353 tests on x86oids.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 30 Apr 2010 16:46:48 +0000 (16:46 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Fri, 30 Apr 2010 16:46:48 +0000 (16:46 +0000)
  * In undefined_tramp, move return address from passing location to
storage location before trapping.

NEWS
src/runtime/x86-64-assem.S
src/runtime/x86-assem.S
version.lisp-expr

diff --git a/NEWS b/NEWS
index a9871d1..7a8f727 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,8 @@
 ;;;; -*- coding: utf-8; fill-column: 78 -*-
+changes relative to sbcl-1.9.38:
+  * bug fix: Backtrace from undefined function on x86 and x86-64 now show
+    the calling frame.
+
 changes in sbcl-1.0.38 relative to sbcl-1.0.37:
   * incompatible change: Thread names are now restricted to SIMPLE-STRINGs
     like for any other thread-related datastructure, MUTEX, etc. (lp#547095)
index 388c3bf..c29aceb 100644 (file)
@@ -266,6 +266,7 @@ GNAME(fpu_restore):
        .globl  GNAME(undefined_tramp)
        TYPE(GNAME(undefined_tramp))
 GNAME(undefined_tramp):
+       pop     8(%rbp)         # Save return PC for backtrace.
        TRAP
        .byte   trap_Error
         .byte   2
index 8e0db32..5a89a4a 100644 (file)
@@ -338,6 +338,7 @@ GNAME(fpu_restore):
        TYPE(GNAME(undefined_tramp))
         .byte   0, 0, 0, SIMPLE_FUN_HEADER_WIDETAG
 GNAME(undefined_tramp):
+       pop     4(%ebp)         # Save return PC for backtrace.
        TRAP
        .byte   trap_Error
         .byte   2
index 23787a7..87cccd9 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.38"
+"1.0.38.1"