diff options
| author | Patrick Walton <[email protected]> | 2010-08-19 14:40:43 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2010-08-19 15:38:57 -0700 |
| commit | 09ebda7ce5720e76aa38b75a5361d9a9306f5d83 (patch) | |
| tree | 5ec9254d9cf4a464e5ba82f4f016810d654a64fb /src | |
| parent | Use "/usr/bin/env python" per the prevailing style (diff) | |
| download | rust-09ebda7ce5720e76aa38b75a5361d9a9306f5d83.tar.xz rust-09ebda7ce5720e76aa38b75a5361d9a9306f5d83.zip | |
Add some mangled stabs to help debugging on Windows
Diffstat (limited to 'src')
| -rw-r--r-- | src/boot/be/pe.ml | 20 |
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))) ;; |