[llvm-commits] [llvm] r48851 - in /llvm/trunk: bindings/ocaml/executionengine/Makefile bindings/ocaml/executionengine/llvm_executionengine.ml bindings/ocaml/executionengine/llvm_executionengine.mli include/llvm-c/ExecutionEngine.h lib/ExecutionEngine/ExecutionEngineBindings.cpp test/Bindings/Ocaml/executionengine.ml

Erick Tryzelaar idadesub at users.sourceforge.net
Wed Mar 26 17:27:15 PDT 2008


Author: erickt
Date: Wed Mar 26 19:27:14 2008
New Revision: 48851

URL: http://llvm.org/viewvc/llvm-project?rev=48851&view=rev
Log:
Expose ExecutionEngine::getTargetData() to c and ocaml bindings.

Modified:
    llvm/trunk/bindings/ocaml/executionengine/Makefile
    llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.ml
    llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.mli
    llvm/trunk/include/llvm-c/ExecutionEngine.h
    llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
    llvm/trunk/test/Bindings/Ocaml/executionengine.ml

Modified: llvm/trunk/bindings/ocaml/executionengine/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/executionengine/Makefile?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/bindings/ocaml/executionengine/Makefile (original)
+++ llvm/trunk/bindings/ocaml/executionengine/Makefile Wed Mar 26 19:27:14 2008
@@ -15,6 +15,6 @@
 LIBRARYNAME := llvm_executionengine
 DONT_BUILD_RELINKED := 1
 UsedComponents := executionengine jit interpreter native
-UsedOcamlInterfaces := llvm
+UsedOcamlInterfaces := llvm llvm_target
 
 include ../Makefile.ocaml

Modified: llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.ml?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.ml (original)
+++ llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.ml Wed Mar 26 19:27:14 2008
@@ -82,6 +82,9 @@
     = "llvm_ee_run_function_as_main"
   external free_machine_code: Llvm.llvalue -> t -> unit
     = "llvm_ee_free_machine_code"
+
+  external target_data: t -> Llvm_target.TargetData.t
+    = "LLVMGetExecutionEngineTargetData"
   
   (* The following are not bound. Patches are welcome.
   

Modified: llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.mli
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.mli?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.mli (original)
+++ llvm/trunk/bindings/ocaml/executionengine/llvm_executionengine.mli Wed Mar 26 19:27:14 2008
@@ -147,4 +147,8 @@
   (** [free_machine_code f ee] releases the memory in the execution engine [ee]
       used to store the machine code for the function [f]. *)
   val free_machine_code: Llvm.llvalue -> t -> unit
+
+  (** [target_data ee] is the target data owned by the execution engine
+      [ee]. *)
+  val target_data: t -> Llvm_target.TargetData.t
 end

Modified: llvm/trunk/include/llvm-c/ExecutionEngine.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/ExecutionEngine.h?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/include/llvm-c/ExecutionEngine.h (original)
+++ llvm/trunk/include/llvm-c/ExecutionEngine.h Wed Mar 26 19:27:14 2008
@@ -20,6 +20,7 @@
 #define LLVM_C_EXECUTIONENGINE_H
 
 #include "llvm-c/Core.h"
+#include "llvm-c/Target.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -88,6 +89,8 @@
 int LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name,
                      LLVMValueRef *OutFn);
 
+LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE);
+
 #ifdef __cplusplus
 }
 

Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/ExecutionEngineBindings.cpp Wed Mar 26 19:27:14 2008
@@ -187,3 +187,7 @@
   }
   return 1;
 }
+
+LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE) {
+  return wrap(unwrap(EE)->getTargetData());
+}

Modified: llvm/trunk/test/Bindings/Ocaml/executionengine.ml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Bindings/Ocaml/executionengine.ml?rev=48851&r1=48850&r2=48851&view=diff

==============================================================================
--- llvm/trunk/test/Bindings/Ocaml/executionengine.ml (original)
+++ llvm/trunk/test/Bindings/Ocaml/executionengine.ml Wed Mar 26 19:27:14 2008
@@ -1,9 +1,10 @@
-(* RUN: %ocamlc -warn-error A llvm.cma llvm_executionengine.cma %s -o %t
+(* RUN: %ocamlc -warn-error A llvm.cma llvm_target.cma llvm_executionengine.cma %s -o %t
  * RUN: ./%t %t.bc
  *)
 
 open Llvm
 open Llvm_executionengine
+open Llvm_target
 
 (* Note that this takes a moment to link, so it's best to keep the number of
    individual tests low. *)
@@ -92,6 +93,13 @@
   
   (* run_static_dtors *)
   ExecutionEngine.run_static_dtors ee;
+
+  (* Show that the target data binding links and runs.*)
+  let td = ExecutionEngine.target_data ee in
+
+  (* Demonstrate that a garbage pointer wasn't returned. *)
+  let ty = intptr_type td in
+  if ty != i32_type && ty != i64_type then bomb "target_data did not work";
   
   (* dispose *)
   ExecutionEngine.dispose ee





More information about the llvm-commits mailing list