blob: 3252f53f67ecf6c134dc0aa3264fe6674a789426 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
(* TEST
include dynlink
readonly_files = "backtrace_dynlink_plugin.ml"
libraries = ""
* shared-libraries
** native-dynlink
*** setup-ocamlopt.byte-build-env
**** ocamlopt.byte
module = "backtrace_dynlink.ml"
flags = "-g"
**** ocamlopt.byte
program = "backtrace_dynlink_plugin.cmxs"
flags = "-shared -g"
all_modules = "backtrace_dynlink_plugin.ml"
**** ocamlopt.byte
program = "${test_build_directory}/main.exe"
libraries = "dynlink"
all_modules = "backtrace_dynlink.cmx"
***** run
ocamlrunparam += ",b=1"
****** no-flambda
******* check-program-output
****** flambda
reference = "${test_source_directory}/backtrace_dynlink.flambda.reference"
******* check-program-output
*)
(* test for backtrace and stack unwinding with dynlink. *)
(* https://github.com/ocaml-multicore/ocaml-multicore/issues/440 *)
(* https://github.com/ocaml-multicore/ocaml-multicore/pull/499 *)
let () =
Dynlink.allow_unsafe_modules true;
try
Dynlink.loadfile "backtrace_dynlink_plugin.cmxs"
with
| Dynlink.Error err ->
print_endline @@ Dynlink.error_message err;
Printexc.print_backtrace stdout;
| exn ->
Printexc.to_string exn |> print_endline;
print_endline "ERROR"
|