aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-02-09 11:31:44 -0800
committerGraydon Hoare <[email protected]>2011-02-09 11:37:56 -0800
commiteb854ffb4423c053451882fdc204fd717bb07ad4 (patch)
tree7215c91037afac519ff4f7bf5eca86b3142cc60e
parentAdd .bss fragment support to elf. (diff)
downloadrust-eb854ffb4423c053451882fdc204fd717bb07ad4.tar.xz
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 f17541ee..3cc936c0 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 ->