X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fforeign.test.sh;h=6d784888b4de23c1dfb81445048f7b7e525d46ca;hb=d8659f1e656234e8f0f47d5295b503dd6cff4aba;hp=ee78f512b5caf3d41fc17a654fdbdf3e6aada295;hpb=9cbb7f9b3a418314ffcd8f2cb0448278d2b6f812;p=sbcl.git diff --git a/tests/foreign.test.sh b/tests/foreign.test.sh index ee78f51..6d78488 100644 --- a/tests/foreign.test.sh +++ b/tests/foreign.test.sh @@ -1,6 +1,7 @@ #!/bin/sh -# tests related to foreign function interface and LOAD-FOREIGN +# tests related to foreign function interface and loading of shared +# libraries # This software is part of the SBCL system. See the README file for # more information. @@ -8,46 +9,324 @@ # While most of SBCL is derived from the CMU CL system, the test # files (like this one) were written from scratch after the fork # from CMU CL. -# +# # This software is in the public domain and is provided with # absolutely no warranty. See the COPYING and CREDITS files for # more information. echo //entering foreign.test.sh +# simple way to make sure we're not punting by accident: +# setting PUNT to anything other than 104 will make non-dlopen +# and non-linkage-table platforms fail this +PUNT=104 + testfilestem=${TMPDIR:-/tmp}/sbcl-foreign-test-$$ -# Make a little shared object file to test with. -echo 'int summish(int x, int y) { return 1 + x + y; }' > $testfilestem.c -cc -c $testfilestem.c -o $testfilestem.o -ld -shared -o $testfilestem.so $testfilestem.o - -# Test interaction with the shared object file. -${SBCL:-sbcl} < $testfilestem.c < $testfilestem-b.c +echo 'int bar() { return 42; }' >> $testfilestem-b.c +build_so $testfilestem-b + +echo 'int foo = 42;' > $testfilestem-b2.c +echo 'int bar() { return 13; }' >> $testfilestem-b2.c +build_so $testfilestem-b2 + +echo 'int late_foo = 43;' > $testfilestem-c.c +echo 'int late_bar() { return 14; }' >> $testfilestem-c.c +build_so $testfilestem-c + +## Foreign definitions & load + +cat > $testfilestem.base.lisp < $testfilestem.fast.lisp +cat $testfilestem.base.lisp >> $testfilestem.fast.lisp + +echo "(declaim (optimize space))" > $testfilestem.small.lisp +cat $testfilestem.base.lisp >> $testfilestem.small.lisp + +# Test code +cat > $testfilestem.test.lisp <