summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghci/linking
diff options
context:
space:
mode:
authorBen Gamari <ben@well-typed.com>2019-01-30 01:06:12 -0500
committerBen Gamari <ben@well-typed.com>2019-01-30 01:06:12 -0500
commit76c8fd674435a652c75a96c85abbf26f1f221876 (patch)
treeb02a6f5307a20efc25ddb27c58977069b48972b6 /testsuite/tests/ghci/linking
parent7cdcd3e12a5c3a337e36fa80c64bd72e5ef79b24 (diff)
downloadhaskell-76c8fd674435a652c75a96c85abbf26f1f221876.tar.gz
Batch merge
Diffstat (limited to 'testsuite/tests/ghci/linking')
-rw-r--r--testsuite/tests/ghci/linking/Makefile5
-rw-r--r--testsuite/tests/ghci/linking/T15729.c4
-rw-r--r--testsuite/tests/ghci/linking/T15729.hs14
-rw-r--r--testsuite/tests/ghci/linking/T15729.stdout2
-rw-r--r--testsuite/tests/ghci/linking/all.T28
-rw-r--r--testsuite/tests/ghci/linking/dyn/all.T20
6 files changed, 48 insertions, 25 deletions
diff --git a/testsuite/tests/ghci/linking/Makefile b/testsuite/tests/ghci/linking/Makefile
index 793998eb92..bfbcf24350 100644
--- a/testsuite/tests/ghci/linking/Makefile
+++ b/testsuite/tests/ghci/linking/Makefile
@@ -134,3 +134,8 @@ T14708:
"$(TEST_HC)" -c add.c -o T14708scratch/add.o
"$(AR)" cqs T14708scratch/libadd.a T14708scratch/add.o
-"$(TEST_HC)" $(TEST_HC_OPTS_INTERACTIVE) -LT14708scratch -ladd T14708.hs
+
+.PHONY: T15729
+T15729:
+ "$(TEST_HC)" -fPIC -c T15729.c -o bss.o
+ echo "main" | "$(TEST_HC)" $(TEST_HC_OPTS_INTERACTIVE) bss.o T15729.hs
diff --git a/testsuite/tests/ghci/linking/T15729.c b/testsuite/tests/ghci/linking/T15729.c
new file mode 100644
index 0000000000..67cc6cd173
--- /dev/null
+++ b/testsuite/tests/ghci/linking/T15729.c
@@ -0,0 +1,4 @@
+int readBss(int i) {
+ static int bss[1 << 20];
+ return bss[i];
+}
diff --git a/testsuite/tests/ghci/linking/T15729.hs b/testsuite/tests/ghci/linking/T15729.hs
new file mode 100644
index 0000000000..f35f96eac1
--- /dev/null
+++ b/testsuite/tests/ghci/linking/T15729.hs
@@ -0,0 +1,14 @@
+module T15729 (main) where
+
+import Foreign
+import Foreign.C
+
+foreign import ccall unsafe "readBss"
+ readBss :: Int -> IO Int
+
+main :: IO ()
+main = do
+ prefix <- mapM readBss [0 .. 10]
+ print prefix
+ samples <- mapM readBss [0, 19 .. bit 20 - 1]
+ print $ foldr1 (.|.) samples
diff --git a/testsuite/tests/ghci/linking/T15729.stdout b/testsuite/tests/ghci/linking/T15729.stdout
new file mode 100644
index 0000000000..2a408d0e6d
--- /dev/null
+++ b/testsuite/tests/ghci/linking/T15729.stdout
@@ -0,0 +1,2 @@
+[0,0,0,0,0,0,0,0,0,0,0]
+0
diff --git a/testsuite/tests/ghci/linking/all.T b/testsuite/tests/ghci/linking/all.T
index d5ee2ff4fc..792e91bc9a 100644
--- a/testsuite/tests/ghci/linking/all.T
+++ b/testsuite/tests/ghci/linking/all.T
@@ -3,45 +3,45 @@ test('ghcilink001',
when(ghc_dynamic(), expect_fail), # dynamic ghci can't load '.a's
unless(doing_ghci, skip),
extra_clean(['dir001/*','dir001'])],
- run_command,
- ['$MAKE -s --no-print-directory ghcilink001'])
+ makefile_test, ['ghcilink001'])
test('ghcilink002', [extra_files(['TestLink.hs', 'f.c']),
# Fragile when unregisterised; see #16085
when(unregisterised(), skip),
- unless(doing_ghci, skip)], run_command,
- ['$MAKE -s --no-print-directory ghcilink002'])
+ unless(doing_ghci, skip)],
+ makefile_test, ['ghcilink002'])
-test('ghcilink003', [unless(doing_ghci, skip)], run_command,
- ['$MAKE -s --no-print-directory ghcilink003'])
+test('ghcilink003', [unless(doing_ghci, skip)], makefile_test, ['ghcilink003'])
test('ghcilink004',
[extra_files(['TestLink.hs', 'f.c']),
unless(doing_ghci, skip),
when(arch('powerpc64') or arch('powerpc64le'), expect_broken(11259))],
- run_command, ['$MAKE -s --no-print-directory ghcilink004'])
+ makefile_test, ['ghcilink004'])
test('ghcilink005',
[extra_files(['TestLink.hs', 'f.c']),
# Fragile when unregisterised; see #16085
when(unregisterised(), skip),
unless(doing_ghci, skip)],
- run_command,
- ['$MAKE -s --no-print-directory ghcilink005'])
+ makefile_test, ['ghcilink005'])
-test('ghcilink006', [unless(doing_ghci, skip)], run_command,
- ['$MAKE -s --no-print-directory ghcilink006'])
+test('ghcilink006', [unless(doing_ghci, skip)], makefile_test, ['ghcilink006'])
test('T3333',
[unless(doing_ghci, skip),
unless(opsys('linux') or opsys('darwin') or ghc_dynamic(),
expect_broken(3333))],
- run_command, ['$MAKE -s --no-print-directory T3333'])
+ makefile_test, ['T3333'])
test('T14708',
[extra_files(['T14708.hs', 'add.c']),
unless(doing_ghci, skip),
unless(ghc_dynamic(), skip),
extra_clean(['T14708scratch/*', 'T14708'])],
- run_command,
- ['$MAKE -s --no-print-directory T14708'])
+ makefile_test, ['T14708'])
+
+test('T15729',
+ [extra_files(['T15729.hs', 'T15729.c']),
+ unless(doing_ghci, skip)],
+ makefile_test, ['T15729'])
diff --git a/testsuite/tests/ghci/linking/dyn/all.T b/testsuite/tests/ghci/linking/dyn/all.T
index f8679bcbfe..2efcbbb4fa 100644
--- a/testsuite/tests/ghci/linking/dyn/all.T
+++ b/testsuite/tests/ghci/linking/dyn/all.T
@@ -1,18 +1,17 @@
test('load_short_name', [extra_files(['A.c']),
- unless(doing_ghci, skip)], run_command,
- ['$MAKE -s --no-print-directory load_short_name'])
+ unless(doing_ghci, skip)],
+ makefile_test, ['load_short_name'])
test('T1407',
[extra_files(['A.c']),
unless(doing_ghci, skip),
pre_cmd('$MAKE -s --no-print-directory compile_libT1407'),
extra_hc_opts('-L"$PWD/T1407dir"')],
- run_command, ['$MAKE --no-print-directory -s T1407'])
+ makefile_test, [])
test('T3242',
[unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
- run_command,
- ['$MAKE -s --no-print-directory T3242'])
+ makefile_test, ['T3242'])
test('T10955',
[extra_files(['A.c', 'B.c']),
@@ -21,8 +20,7 @@ test('T10955',
extra_hc_opts('-L. -L./bin_dep')],
ghci_script, ['T10955.script'])
-test('T10955dyn', [extra_files(['A.c', 'B.c'])], run_command,
- ['$MAKE -s --no-print-directory compile_libAB_dyn'])
+test('T10955dyn', [extra_files(['A.c', 'B.c'])], makefile_test, ['compile_libAB_dyn'])
test('T10458',
[extra_files(['A.c']),
@@ -33,16 +31,16 @@ test('T10458',
test('T11072gcc', [extra_files(['A.c', 'T11072.hs']),
unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
- run_command, ['$MAKE -s --no-print-directory compile_libAS_impl_gcc'])
+ makefile_test, ['compile_libAS_impl_gcc'])
test('T11072msvc', [extra_files(['A.c', 'T11072.hs', 'libAS.def', 'i686/', 'x86_64/']),
unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
- run_command, ['$MAKE -s --no-print-directory compile_libAS_impl_msvc'])
+ makefile_test, ['compile_libAS_impl_msvc'])
test('T13606', [unless(doing_ghci, skip), unless(opsys('mingw32'), skip),
exit_code(0)],
- run_command, ['$MAKE -s --no-print-directory T13606'])
+ makefile_test, ['T13606'])
test('big-obj', [extra_files(['big-obj-c.c', 'big-obj.hs']),
unless(doing_ghci, skip), unless(opsys('mingw32'), skip)],
- run_command, ['$MAKE -s --no-print-directory big-obj'])
+ makefile_test, ['big-obj'])