aboutsummaryrefslogtreecommitdiff
path: root/src/boot/be
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2010-08-19 14:40:43 -0700
committerPatrick Walton <[email protected]>2010-08-19 15:38:57 -0700
commit09ebda7ce5720e76aa38b75a5361d9a9306f5d83 (patch)
tree5ec9254d9cf4a464e5ba82f4f016810d654a64fb /src/boot/be
parentUse "/usr/bin/env python" per the prevailing style (diff)
downloadrust-09ebda7ce5720e76aa38b75a5361d9a9306f5d83.tar.xz
rust-09ebda7ce5720e76aa38b75a5361d9a9306f5d83.zip
Add some mangled stabs to help debugging on Windows
Diffstat (limited to 'src/boot/be')
-rw-r--r--src/boot/be/pe.ml20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/boot/be/pe.ml b/src/boot/be/pe.ml
index d360ddf5..89c45c62 100644
--- a/src/boot/be/pe.ml
+++ b/src/boot/be/pe.ml
@@ -783,9 +783,25 @@ let crate_exports (sem:Semant.ctxt) : pe_export array =
let export_seg (_, tab) =
Array.of_list (List.map export_sym (htab_pairs tab))
in
+
+ (* Make some fake symbol table entries to aid in debugging. *)
+ let export_stab (node_id, fixup) =
+ let name = Hashtbl.find sem.Semant.ctxt_all_item_names node_id in
+ {
+ pe_export_name_fixup = new_fixup "export name fixup";
+ pe_export_name = "rust$" ^ (Ast.sprintf_name () name);
+ pe_export_address_fixup = fixup
+ }
+ in
+
+ let stabs =
+ let pairs = htab_pairs sem.Semant.ctxt_fn_fixups in
+ Array.of_list (List.map export_stab pairs)
+ in
+
Array.concat
- (List.map export_seg
- (htab_pairs sem.Semant.ctxt_native_provided))
+ (stabs::(List.map export_seg
+ (htab_pairs sem.Semant.ctxt_native_provided)))
;;