mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-01 08:23:21 +01:00
2acdd67db2
See http://caml.inria.fr/mantis/view.php?id=4166 If we call only external functions from a module, then its 'let _' bindings don't get executed, which means that the exceptions don't get registered for use in the C code. This in turn causes llvm_raise to call raise_with_arg() with a NULL pointer and cause a segmentation fault. The workaround is to declare all 'external' functions as 'val' in these .mli files. Also added a separate testcase (the testcase must call only external functions for the bug to occur). llvm-svn: 122497
30 lines
1.2 KiB
OCaml
30 lines
1.2 KiB
OCaml
(*===-- llvm_bitreader.mli - LLVM Ocaml Interface ---------------*- C++ -*-===*
|
|
*
|
|
* The LLVM Compiler Infrastructure
|
|
*
|
|
* This file is distributed under the University of Illinois Open Source
|
|
* License. See LICENSE.TXT for details.
|
|
*
|
|
*===----------------------------------------------------------------------===*)
|
|
|
|
(** Bitcode reader.
|
|
|
|
This interface provides an ocaml API for the LLVM bitcode reader, the
|
|
classes in the Bitreader library. *)
|
|
|
|
exception Error of string
|
|
|
|
(** [get_module context mb] reads the bitcode for a new module [m] from the
|
|
memory buffer [mb] in the context [context]. Returns [m] if successful, or
|
|
raises [Error msg] otherwise, where [msg] is a description of the error
|
|
encountered. See the function [llvm::getBitcodeModule]. *)
|
|
val get_module : Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule
|
|
|
|
|
|
(** [parse_bitcode context mb] parses the bitcode for a new module [m] from the
|
|
memory buffer [mb] in the context [context]. Returns [m] if successful, or
|
|
raises [Error msg] otherwise, where [msg] is a description of the error
|
|
encountered. See the function [llvm::ParseBitcodeFile]. *)
|
|
val parse_bitcode : Llvm.llcontext -> Llvm.llmemorybuffer -> Llvm.llmodule
|
|
|