about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2010-11-05 18:45:06 -0700
committerGraydon Hoare <graydon@mozilla.com>2010-11-05 18:45:06 -0700
commit049072db824b7eeb4246fd75fa82b2837c00f9d3 (patch)
tree5561d47944e2a8178c3be429c0fed20c74f01e35 /src
parent216082d0405c36e63f602462bb119a3c3b4a488d (diff)
downloadrust-049072db824b7eeb4246fd75fa82b2837c00f9d3.tar.gz
rust-049072db824b7eeb4246fd75fa82b2837c00f9d3.zip
Update lltrans to also emit WinMain@16 on windows.
Diffstat (limited to 'src')
-rw-r--r--src/boot/llvm/llasm.ml2
-rw-r--r--src/boot/llvm/llfinal.ml9
-rw-r--r--src/boot/llvm/lltrans.ml2
3 files changed, 10 insertions, 3 deletions
diff --git a/src/boot/llvm/llasm.ml b/src/boot/llvm/llasm.ml
index 071e0bd655e..67f02517653 100644
--- a/src/boot/llvm/llasm.ml
+++ b/src/boot/llvm/llasm.ml
@@ -26,7 +26,7 @@ let x86_glue
   let (prefix,align) =
     match sess.Session.sess_targ with
         Linux_x86_elf
-      | Win32_x86_pe -> ("",4)
+      | Win32_x86_pe -> ("_",4)
       | MacOS_x86_macho -> ("_", 16)
   in
   let save_callee_saves =
diff --git a/src/boot/llvm/llfinal.ml b/src/boot/llvm/llfinal.ml
index 7241d1ab33e..a7e190cd9c1 100644
--- a/src/boot/llvm/llfinal.ml
+++ b/src/boot/llvm/llfinal.ml
@@ -4,6 +4,7 @@
  *)
 
 let finalize_module
+    (sess:Session.sess)
     (llctx:Llvm.llcontext)
     (llmod:Llvm.llmodule)
     (abi:Llabi.abi)
@@ -68,7 +69,13 @@ let finalize_module
   (* Define the main function for crt0 to call. *)
   let main_fn =
     let main_ty = Llvm.function_type i32 [| i32; i32 |] in
-    Llvm.define_function "main" main_ty llmod
+    let main_name =
+      match sess.Session.sess_targ with
+          Common.Win32_x86_pe -> "WinMain@16"
+        | Common.Linux_x86_elf
+        | Common.MacOS_x86_macho -> "main"
+  in
+    Llvm.define_function main_name main_ty llmod
   in
   let argc = Llvm.param main_fn 0 in
   let argv = Llvm.param main_fn 1 in
diff --git a/src/boot/llvm/lltrans.ml b/src/boot/llvm/lltrans.ml
index c3b097af256..22c1557e7c7 100644
--- a/src/boot/llvm/lltrans.ml
+++ b/src/boot/llvm/lltrans.ml
@@ -1132,7 +1132,7 @@ let trans_crate
         Hashtbl.iter declare_mod_item items;
         Hashtbl.iter trans_mod_item items;
         Llfinal.finalize_module
-          llctx llmod abi asm_glue exit_task_glue crate_ptr;
+          sess llctx llmod abi asm_glue exit_task_glue crate_ptr;
         llmod
     with e -> Llvm.dispose_module llmod; raise e
 ;;