diff options
-rw-r--r-- | testsuite/tests/ffi/should_run/5402.hs | 4 | ||||
-rw-r--r-- | testsuite/tests/ffi/should_run/5402_main.c | 13 | ||||
-rw-r--r-- | testsuite/tests/ffi/should_run/Makefile | 3 | ||||
-rw-r--r-- | testsuite/tests/ffi/should_run/all.T | 9 |
4 files changed, 29 insertions, 0 deletions
diff --git a/testsuite/tests/ffi/should_run/5402.hs b/testsuite/tests/ffi/should_run/5402.hs new file mode 100644 index 0000000000..6b20b9fb28 --- /dev/null +++ b/testsuite/tests/ffi/should_run/5402.hs @@ -0,0 +1,4 @@ +module Test where +import System.Exit +foreign export ccall hsmain :: IO () +hsmain = exitWith (ExitFailure 42) diff --git a/testsuite/tests/ffi/should_run/5402_main.c b/testsuite/tests/ffi/should_run/5402_main.c new file mode 100644 index 0000000000..6ef2c651a9 --- /dev/null +++ b/testsuite/tests/ffi/should_run/5402_main.c @@ -0,0 +1,13 @@ +#include "HsFFI.h" +#include <stdio.h> +#include <stdlib.h> +#include "5402_stub.h" + +int main (int argc, char *argv[]) +{ + hs_init(&argc,&argv); + hs_init(&argc,&argv); + hsmain(); + printf("I shouldn't be here\n"); + exit(1); +} diff --git a/testsuite/tests/ffi/should_run/Makefile b/testsuite/tests/ffi/should_run/Makefile index c30f5565f4..64bc63a2d3 100644 --- a/testsuite/tests/ffi/should_run/Makefile +++ b/testsuite/tests/ffi/should_run/Makefile @@ -13,3 +13,6 @@ ffi018_ghci_setup : ffi002_setup : '$(TEST_HC)' $(TEST_HC_OPTS) -c ffi002.hs + +5402_setup : + '$(TEST_HC)' $(TEST_HC_OPTS) -c 5402.hs diff --git a/testsuite/tests/ffi/should_run/all.T b/testsuite/tests/ffi/should_run/all.T index cf1e169c25..d6fdc8cde4 100644 --- a/testsuite/tests/ffi/should_run/all.T +++ b/testsuite/tests/ffi/should_run/all.T @@ -166,3 +166,12 @@ test('4038', normal, compile_and_run, flagsFor4038) test('4221', [ omit_ways(['ghci']), extra_clean(['4221_c.o']) ], compile_and_run, ['4221_c.c']) +test('5402', [ omit_ways(['ghci']), + exit_code(42), + extra_clean(['5402_main.o']), + # The 5402_setup hack is to ensure that we generate + # 5402_stub.h before compiling 5402_main.c, which + # needs it. + compile_cmd_prefix('$MAKE --no-print-directory 5402_setup && ') ], + compile_and_run, ["-no-hs-main 5402_main.c"]) + |