Fold integer-simple.git into ghc.git (re #8545)
[ghc.git] / testsuite / tests / rts / all.T
1 test('testblockalloc',
2      [c_src, only_ways(['normal','threaded1']), extra_run_opts('+RTS -I0')], 
3      compile_and_run, [''])
4
5
6 # See bug #101, test requires +RTS -c (or equivalently +RTS -M<something>)
7 # only GHCi triggers the bug, but we run the test all ways for completeness.
8 test('bug1010', normal, compile_and_run, ['+RTS -c -RTS'])
9 test('derefnull',
10      [when(opsys('mingw32'), expect_broken(6079)),
11       # LLVM Optimiser considers dereference of a null pointer
12       # undefined and marks the code as unreachable which means
13       # that later optimisations remove it altogether.
14       omit_ways(['optllvm']),
15       # SIGSEGV on Linux (which we make the default)
16       exit_code(139),
17       # Apparently the output can be different on different
18       # Linux setups, so just ignore it. As long as we get
19       # the right exit code we're OK.
20       when(opsys('linux'), ignore_output),
21       # SIGBUS on OX X (PPC and x86 only; amd64 gives SEGV)
22       when(platform('i386-apple-darwin'), exit_code(138)),
23       when(platform('powerpc-apple-darwin'), exit_code(138)),
24       when(opsys('mingw32'), exit_code(1))],
25      compile_and_run, [''])
26 test('divbyzero',
27      [when(opsys('mingw32'), expect_broken(6079)),
28       # SIGFPE on Linux
29       exit_code(136),
30       # Apparently the output can be different on different
31       # Linux setups, so just ignore it. As long as we get
32       # the right exit code we're OK.
33       when(opsys('linux'), ignore_output),
34       when(opsys('mingw32'), exit_code(1))],
35      compile_and_run, [''])
36
37 test('outofmem', when(opsys('darwin'), skip), 
38                  run_command, ['$MAKE -s --no-print-directory outofmem'])
39 test('outofmem2', extra_run_opts('+RTS -M5m -RTS'),
40                   run_command, ['$MAKE -s --no-print-directory outofmem2'])
41
42 test('T2047', [ignore_output, extra_run_opts('+RTS -c -RTS')],
43               compile_and_run, ['-package containers'])
44
45 # Blackhole-detection test.
46 # Skip GHCi due to #2786
47 test('T2783', [ omit_ways(['ghci']), exit_code(1) ], compile_and_run, [''])
48
49 # Test the work-stealing deque implementation.  We run this test in
50 # both threaded1 (-threaded -debug) and threaded2 (-threaded) ways.
51 test('testwsdeque', [unless(in_tree_compiler(), skip),
52                     c_src, only_ways(['threaded1', 'threaded2'])],
53                     compile_and_run, ['-I../../../rts'])
54
55 test('T3236', [c_src, only_ways(['normal','threaded1']), exit_code(1)], compile_and_run, [''])
56
57 test('stack001', extra_run_opts('+RTS -K32m -RTS'), compile_and_run, [''])
58 test('stack002', extra_run_opts('+RTS -K32m -k4m -RTS'), compile_and_run, [''])
59
60 # run this test with very small stack chunks to exercise the stack
61 # overflow/underflow machinery.
62 test('stack003', [ omit_ways('ghci'), # uses unboxed tuples
63                    extra_run_opts('500000 +RTS -kc1k -kb100 -K96m -RTS') ],
64                  compile_and_run, [''])
65
66 test('atomicinc', [ c_src, only_ways(['normal','threaded1', 'threaded2']) ], compile_and_run, [''])
67
68 test('T3424', # it's slow:
69               [ when(fast(), skip), only_ways(['normal','threaded1','ghci']) ],
70               compile_and_run, [''])
71
72 # Test for out-of-range heap size
73 test('rtsflags001', [ only_ways(['normal']), exit_code(1), extra_run_opts('+RTS -H0m -RTS') ], compile_and_run, [''])
74
75 # Crashed with 7.2 and earlier
76 test('rtsflags002', [ only_ways(['normal']) ], compile_and_run, ['-with-rtsopts="-B -B -B"'])
77
78 # Test to see if linker scripts link properly to real ELF files
79 test('T2615',
80      [ when(opsys('mingw32'), skip),
81        # OS X doesn't seem to support linker scripts
82        when(opsys('darwin'), skip),
83        # Solaris' linker does not support GNUish linker scripts
84        when(opsys('solaris2'), skip),
85        pre_cmd('$MAKE -s --no-print-directory T2615-prep'),
86        # Add current directory to dlopen search path
87        cmd_prefix('LD_LIBRARY_PATH=$LD_LIBRARY_PATH:. '),
88        extra_clean(['libfoo_T2615.so', 'libfoo_T2615.o'])],
89      compile_and_run,
90      ['-package ghc'])
91
92 # omit dyn and profiling ways, because we don't build dyn_l or p_l
93 # variants of the RTS by default
94 test('traceEvent', [ omit_ways(['dyn'] + prof_ways), 
95                      extra_run_opts('+RTS -ls -RTS') ], 
96                    compile_and_run, ['-eventlog'])
97
98 test('T4059',
99      extra_clean(['T4059_c.o']),
100      run_command,
101      ['$MAKE -s --no-print-directory T4059'])
102
103 # Test for #4274
104 test('exec_signals', [
105      when(opsys('mingw32'), skip),
106      pre_cmd('$MAKE -s --no-print-directory exec_signals-prep'),
107      cmd_prefix('./exec_signals_prepare'),
108      extra_clean(['exec_signals_child', 'exec_signals_prepare'])
109     ], compile_and_run, [''])
110
111 test('return_mem_to_os', normal, compile_and_run, [''])
112
113 test('T4850', when(opsys('mingw32'), expect_broken(4850)), run_command, ['$MAKE -s --no-print-directory T4850'])
114
115 def config_T5250(name, opts):
116     if not (config.arch in ['i386','x86_64']):
117         opts.skip = 1;
118
119 test('T5250', [ config_T5250,
120                 # stack ptr is not 16-byte aligned on 32-bit Windows
121                 when(platform('i386-unknown-mingw32'), expect_fail),
122                 when(platform('i386-unknown-linux'),
123                             expect_broken_for(4211,['llvm'])),
124                 extra_clean(['spalign.o']),
125                 omit_ways(['ghci']) ],
126               compile_and_run, ['spalign.c'])
127
128 test('T5423',
129      extra_clean(['T5423_cmm.o']),
130      run_command,
131      ['$MAKE -s --no-print-directory T5423'])
132
133 # Workaround bug #8458: old dlopen opens sections in the wrong order,
134 # so we just accept both orders.
135 def checkDynAsm(actual_file, normaliser):
136     actual_raw = read_no_crs(actual_file)
137     actual_str = normaliser(actual_raw)
138     actual = actual_str.split()
139     if actual == ['initArray1', 'initArray2', 'ctors1', 'ctors2', 'success']:
140         return 1
141     elif actual == ['ctors1', 'ctors2', 'initArray1', 'initArray2', 'success']:
142         if_verbose(1, 'T5435_dyn_asm detected old-style dlopen, see #8458')
143         return 1
144     else:
145         if_verbose(1, 'T5435_dyn_asm failed with %s, see all.T for details' % actual)
146         return 0
147
148 # These should have extra_clean() arguments, but I need
149 # to somehow extract out the name of DLLs to do that
150
151 test('T5435_v_asm', normal, run_command, ['$MAKE -s --no-print-directory T5435_v_asm'])
152 test('T5435_v_gcc', normal, run_command, ['$MAKE -s --no-print-directory T5435_v_gcc'])
153 test('T5435_dyn_asm', check_stdout(checkDynAsm), run_command, ['$MAKE -s --no-print-directory T5435_dyn_asm'])
154 test('T5435_dyn_gcc', normal , run_command, ['$MAKE -s --no-print-directory T5435_dyn_gcc'])
155
156 test('T5993', extra_run_opts('+RTS -k8 -RTS'), compile_and_run, [''])
157
158 test('T6006', [ omit_ways(prof_ways + ['ghci']),
159                  extra_clean(['T6006_c.o']),
160                  pre_cmd('$MAKE -s --no-print-directory T6006_setup') ],
161                  # The T6006_setup hack is to ensure that we generate
162                  # T6006_stub.h before compiling T6006_c.c, which
163                  # needs it.
164                compile_and_run, ['T6006_c.c -no-hs-main'])
165
166 test('T7037',
167      [ extra_clean(['T7037_main.o','T7037_main']) ],
168      run_command,
169      ['$MAKE -s --no-print-directory T7037'])
170
171 test('T7087', exit_code(1), compile_and_run, [''])
172 test('T7160', normal, compile_and_run, [''])
173
174 test('T7040', [ extra_clean(['T7040_c.o']), omit_ways(['ghci']) ],
175      compile_and_run, ['T7040_c.c'])
176
177 test('T7040_ghci', [ only_ways(['ghci']),
178                       pre_cmd('$MAKE -s --no-print-directory T7040_ghci_setup'),
179                       extra_clean(['T7040_ghci_c.o']) ],
180                     compile_and_run, ['T7040_ghci_c.o'])
181
182 test('T7227', [ extra_run_opts('+RTS -tT7227.stat --machine-readable -RTS'),
183                 extra_clean(['T7227.stat']) ]
184             , compile_and_run, [''] )
185
186 test('T7636', [ exit_code(1), extra_run_opts('100000') ], compile_and_run, [''] )
187
188 test('stablename001', expect_fail_for(['hpc']), compile_and_run, [''])
189 # hpc should fail this, because it tags every variable occurrence with
190 # a different tick.  It's probably a bug if it works, hence expect_fail.
191
192 test('T7815', [ multi_cpu_race,
193                 extra_run_opts('50000 +RTS -N2 -RTS'),
194                 only_ways(['threaded1', 'threaded2']) ], compile_and_run, [''] )
195
196 # ignore_output because it contains a unique:
197 #   ffishutdown: Main_dul: interrupted
198 test('ffishutdown', [ ignore_output, only_ways(['threaded1','threaded2']) ], compile_and_run, [''])
199
200 test('T7919', [extra_clean(['T7919A.o','T7919A.hi',
201                             'T7919A.dyn_o','T7919A.dyn_hi']),
202                when(fast(),skip) ],
203              compile_and_run, [config.ghc_th_way_flags])
204
205 test('T8035', normal, compile_and_run, [''])
206
207 test('linker_unload',
208      [ extra_clean(['Test.o','Test.hi', 'linker_unload']), when(opsys('mingw32'), expect_broken(8292)) ],
209      run_command,
210      ['$MAKE -s --no-print-directory linker_unload'])
211
212 test('T8209', [ only_ways(threaded_ways), ignore_output ],
213               compile_and_run, [''])
214
215 test('T8242', [ only_ways(threaded_ways), ignore_output ],
216               compile_and_run, [''])
217
218 test('T8124', [ only_ways(threaded_ways), omit_ways(['ghci']),
219                  extra_clean(['T8124_c.o']),
220                  pre_cmd('$MAKE -s --no-print-directory T8124_setup') ],
221                  # The T8124_setup hack is to ensure that we generate
222                  # T8124_stub.h before compiling T8124_c.c, which
223                  # needs it.
224                compile_and_run, ['T8124_c.c -no-hs-main'])