about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-02-09 11:31:44 -0800
committerGraydon Hoare <graydon@mozilla.com>2011-02-09 11:37:56 -0800
commiteb854ffb4423c053451882fdc204fd717bb07ad4 (patch)
tree7215c91037afac519ff4f7bf5eca86b3142cc60e
parent60635999f313981abe157318025a19d60d8d310a (diff)
downloadrust-eb854ffb4423c053451882fdc204fd717bb07ad4.tar.gz
rust-eb854ffb4423c053451882fdc204fd717bb07ad4.zip
Add several 1-word .bss fragments for FreeBSD.
-rw-r--r--src/boot/be/elf.ml21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/boot/be/elf.ml b/src/boot/be/elf.ml
index f17541eeff0..3cc936c05a5 100644
--- a/src/boot/be/elf.ml
+++ b/src/boot/be/elf.ml
@@ -1644,6 +1644,27 @@ let emit_file
     htab_put text_frags None code;
     htab_put rodata_frags None data;
 
+    if sess.Session.sess_targ = FreeBSD_x86_elf
+    then
+      (* 
+       * FreeBSD wants some extra symbols in .bss so its libc can fill
+       * them in, I think.
+       *)
+      List.iter
+        (fun x -> htab_put bss_frags (Some x) (WORD (TY_u32, (IMM 0L))))
+        [
+          "environ";
+          "optind";
+          "optarg";
+          "_CurrentRuneLocale";
+          "__stack_chk_guard";
+          "__mb_sb_limit";
+          "__isthreaded";
+          "__stdinp";
+          "__stderrp";
+          "__stdoutp";
+        ];
+
     Hashtbl.iter
       begin
         fun _ tab ->