Skip to content

Commit

Permalink
0.9.6.41:
Browse files Browse the repository at this point in the history
	Make the foreign-stack-alignment tests not fail on x86-64 (mind
        you, I'm convinced that the test is valid).

        * Pass -fPIC to cc on x86-64
        * x86-64 wants 16-byte alignment
        * Add WITH-TESTs
  • Loading branch information
jsnell committed Nov 13, 2005
1 parent 7ebe82f commit 2d7acde
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
16 changes: 11 additions & 5 deletions tests/foreign-stack-alignment.impure.lisp
Expand Up @@ -33,15 +33,18 @@
(defvar *required-alignment*
#+(and ppc darwin) 16
#+(and ppc linux) 16
#+(or mips x86-64) 8
#+x86-64 16
#+(or mips) 8
#+x86 4
#-(or x86 x86-64 mips (and ppc (or darwin linux))) (error "Unknown platform"))

;;;; Build the offset-tool as regular excutable, and run it with
;;;; fork/exec, so that no lisp is on the stack. This is our known-good
;;;; number.

(run "cc" "stack-alignment-offset.c" "-o" "stack-alignment-offset")
(run "cc"
#+x86-64 "-fPIC"
"stack-alignment-offset.c" "-o" "stack-alignment-offset")

(defparameter *good-offset*
(parse-integer (run "./stack-alignment-offset"
Expand All @@ -50,6 +53,7 @@
;;;; Build the tool again, this time as a shared object, and load it

(run "cc" "stack-alignment-offset.c"
#+x86-64 "-fPIC"
#+darwin "-bundle" #-darwin "-shared"
"-o" "stack-alignment-offset.so")

Expand All @@ -61,9 +65,11 @@
;;;; Now get the offset by calling from lisp, first with a regular foreign function
;;;; call, then with an intervening callback.

(assert (= *good-offset* (stack-alignment-offset *required-alignment*)))
(with-test (:name :regular)
(assert (= *good-offset* (stack-alignment-offset *required-alignment*))))

(assert (= *good-offset* (trampoline (alien-lambda int ()
(stack-alignment-offset *required-alignment*)))))
(with-test (:name :callback)
(assert (= *good-offset* (trampoline (alien-lambda int ()
(stack-alignment-offset *required-alignment*))))))

;;;; success!
2 changes: 1 addition & 1 deletion version.lisp-expr
Expand Up @@ -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".)
"0.9.6.40"
"0.9.6.41"

0 comments on commit 2d7acde

Please sign in to comment.