summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-05-11 16:24:41 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-05-13 12:11:09 -0400
commit5678f017a69dc758d0edabbdaad755bd5efef465 (patch)
tree2119bbb4720ec3280e0b2b1f237c5cdf53e45345
parent53b3fa1c782b251076707a024f55276d4ccb0a6c (diff)
downloadhaskell-5678f017a69dc758d0edabbdaad755bd5efef465.tar.gz
testsuite: Add tests for #21556
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556_lib.c5
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556a.hs7
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556a.stdout1
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556b.hs7
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556b.stdout1
-rw-r--r--testsuite/tests/rts/linker/T21556/T21556b_c.c6
-rw-r--r--testsuite/tests/rts/linker/T21556/all.T6
7 files changed, 33 insertions, 0 deletions
diff --git a/testsuite/tests/rts/linker/T21556/T21556_lib.c b/testsuite/tests/rts/linker/T21556/T21556_lib.c
new file mode 100644
index 0000000000..dbeab24f85
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556_lib.c
@@ -0,0 +1,5 @@
+#include <stdio.h>
+
+__attribute__((weak)) void hello(int x) {
+ printf("hello %d\n", x+1);
+}
diff --git a/testsuite/tests/rts/linker/T21556/T21556a.hs b/testsuite/tests/rts/linker/T21556/T21556a.hs
new file mode 100644
index 0000000000..5e66be0c3e
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556a.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+
+import Foreign.C.Types
+
+foreign import ccall unsafe "hello" hello :: CInt -> IO ()
+
+main = hello 42
diff --git a/testsuite/tests/rts/linker/T21556/T21556a.stdout b/testsuite/tests/rts/linker/T21556/T21556a.stdout
new file mode 100644
index 0000000000..c91bc968f9
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556a.stdout
@@ -0,0 +1 @@
+hello 43
diff --git a/testsuite/tests/rts/linker/T21556/T21556b.hs b/testsuite/tests/rts/linker/T21556/T21556b.hs
new file mode 100644
index 0000000000..5e66be0c3e
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556b.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+
+import Foreign.C.Types
+
+foreign import ccall unsafe "hello" hello :: CInt -> IO ()
+
+main = hello 42
diff --git a/testsuite/tests/rts/linker/T21556/T21556b.stdout b/testsuite/tests/rts/linker/T21556/T21556b.stdout
new file mode 100644
index 0000000000..09c51b84cb
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556b.stdout
@@ -0,0 +1 @@
+world 42
diff --git a/testsuite/tests/rts/linker/T21556/T21556b_c.c b/testsuite/tests/rts/linker/T21556/T21556b_c.c
new file mode 100644
index 0000000000..87c3139f01
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/T21556b_c.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+void hello(int x) {
+ printf("world %d\n", x);
+}
+
diff --git a/testsuite/tests/rts/linker/T21556/all.T b/testsuite/tests/rts/linker/T21556/all.T
new file mode 100644
index 0000000000..fad0e9758f
--- /dev/null
+++ b/testsuite/tests/rts/linker/T21556/all.T
@@ -0,0 +1,6 @@
+setTestOpts([
+ unless(opsys('mingw32'), skip),
+ extra_files(['T21556_lib.c'])
+])
+test('T21556a', normal, multimod_compile_and_run, ['T21556a', 'T21556_lib.c'])
+test('T21556b', normal, multimod_compile_and_run, ['T21556b', 'T21556_lib.c T21556b_c.c'])