testfilestem=${TMPDIR:-/tmp}/sbcl-foreign-test-$$
-## Make a little shared object files to test with.
+## Make some shared object files to test with.
build_so() {
echo building $1.so
- if [ "$(uname -m)" = x86_64 ]; then
+ if [ "`uname -m`" = x86_64 ]; then
CFLAGS="$CFLAGS -fPIC"
fi
- if [ "$(uname)" = Darwin ]; then
+ if [ "`uname`" = Darwin ]; then
SO_FLAGS="-bundle"
else
SO_FLAGS="-shared"
fi
cc -c $1.c -o $1.o $CFLAGS
- ld $SO_FLAGS -o $1.so $1.o
+ ld $SO_FLAGS -o $1.so $1.o
}
echo 'int summish(int x, int y) { return 1 + x + y; }' > $testfilestem.c
(print :stage-1)
- ;; test realoading object file with new definitions
+ ;; test reloading object file with new definitions
(assert (= 13 foo))
(assert (= 42 (bar)))
(rename-file "$testfilestem-b.so" "$testfilestem-b.bak")
(print :stage-2)
;; test late resolution
- (define-alien-variable late-foo int)
- (define-alien-routine late-bar int)
- (multiple-value-bind (val err) (ignore-errors late-foo)
- (assert (not val))
- (assert (typep err 'undefined-alien-error)))
- (multiple-value-bind (val err) (ignore-errors (late-bar))
- (assert (not val))
- (assert (typep err 'undefined-alien-error)))
- (load-shared-object "$testfilestem-c.so")
- (assert (= 43 late-foo))
- (assert (= 14 (late-bar)))
+ #+linkage-table
+ (progn
+ (define-alien-variable late-foo int)
+ (define-alien-routine late-bar int)
+ (multiple-value-bind (val err) (ignore-errors late-foo)
+ (assert (not val))
+ (assert (typep err 'undefined-alien-error)))
+ (multiple-value-bind (val err) (ignore-errors (late-bar))
+ (assert (not val))
+ (assert (typep err 'undefined-alien-error)))
+ (load-shared-object "$testfilestem-c.so")
+ (assert (= 43 late-foo))
+ (assert (= 14 (late-bar))))
(print :stage-3)