File: backtrace_dynlink.ml

package info (click to toggle)
ocaml 5.4.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 44,372 kB
  • sloc: ml: 370,196; ansic: 52,820; sh: 27,396; asm: 5,462; makefile: 3,679; python: 974; awk: 278; javascript: 273; perl: 59; fortran: 21; cs: 9
file content (82 lines) | stat: -rw-r--r-- 1,316 bytes parent folder | download | duplicates (3)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
(* TEST_BELOW
(* Blank lines added here to preserve locations. *)



























*)

(* 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"

(* TEST
 include dynlink;
 readonly_files = "backtrace_dynlink_plugin.ml";
 libraries = "";
 shared-libraries;
 native-dynlink;
 setup-ocamlopt.byte-build-env;

 module = "backtrace_dynlink.ml";
 flags = "-g";
 ocamlopt.byte;

 unset module;
 program = "backtrace_dynlink_plugin.cmxs";
 flags = "-shared -g";
 all_modules = "backtrace_dynlink_plugin.ml";
 ocamlopt.byte;

 program = "${test_build_directory}/main.exe";
 unset flags;
 libraries = "dynlink";
 all_modules = "backtrace_dynlink.cmx";
 ocamlopt.byte;

 ocamlrunparam += ",b=1";
 run;
 {
   no-flambda;
   check-program-output;
 }{
   reference = "${test_source_directory}/backtrace_dynlink.flambda.reference";
   flambda;
   check-program-output;
 }
*)