[tools] Add mdb2ppdb tool for converting a .mdb file to a portable pdb .pdb file...
authorZoltan Varga <vargaz@gmail.com>
Mon, 16 Jan 2017 23:22:28 +0000 (18:22 -0500)
committerAlexander Köplinger <alex.koeplinger@outlook.com>
Mon, 16 Jan 2017 23:22:28 +0000 (00:22 +0100)
mcs/tools/Makefile
mcs/tools/mdb2ppdb/Makefile [new file with mode: 0644]
mcs/tools/mdb2ppdb/mdb2ppdb.cs [new file with mode: 0644]
mcs/tools/mdb2ppdb/mdb2ppdb.exe.sources [new file with mode: 0644]

index a5d69ff81e5ed291b8d36617f751c8f31485dde0..2311d251ad79b0436a67bbc22ea34c85e8471c4a 100644 (file)
@@ -44,6 +44,7 @@ net_4_5_dirs := \
        cccheck         \
        security        \
        mdbrebase       \
+       mdb2ppdb        \
        ikdasm          \
        mono-symbolicate        \
        linker-analyzer
diff --git a/mcs/tools/mdb2ppdb/Makefile b/mcs/tools/mdb2ppdb/Makefile
new file mode 100644 (file)
index 0000000..3445b1b
--- /dev/null
@@ -0,0 +1,10 @@
+thisdir = tools/mdb2ppdb
+SUBDIRS =
+include ../../build/rules.make
+
+PROGRAM = mdb2ppdb.exe
+
+LOCAL_MCS_FLAGS =
+LIB_REFS = Mono.Cecil Mono.Cecil.Mdb
+
+include ../../build/executable.make
diff --git a/mcs/tools/mdb2ppdb/mdb2ppdb.cs b/mcs/tools/mdb2ppdb/mdb2ppdb.cs
new file mode 100644 (file)
index 0000000..dff7f71
--- /dev/null
@@ -0,0 +1,37 @@
+using System;
+using Mono.Cecil;
+using Mono.Cecil.Cil;
+using Mono.Cecil.Mdb;
+
+public class Driver
+{
+       public static void Main (String[] args) {
+               //
+               // The assembly itself needs to be changed to add some data needed to
+               // find the matching .pdb file.
+               //
+               if (args.Length != 2) {
+                       Console.Error.WriteLine ("Usage: mdb2pdb <input assembly> <output assembly>");
+                       Environment.Exit (1);
+               }
+
+               string infile = args [0];
+               string outfile = args [1];
+
+               if (infile == outfile) {
+                       Console.Error.WriteLine ("Input and output file names needs to be different.");
+                       Environment.Exit (1);
+               }
+
+               var reader_parameters = new ReaderParameters {
+                       SymbolReaderProvider = new MdbReaderProvider (),
+               };
+               using (var module = ModuleDefinition.ReadModule (infile, reader_parameters)) {
+                       var writer_parameters = new WriterParameters {
+                               SymbolWriterProvider = new PortablePdbWriterProvider (),
+                       };
+
+                       module.Write (outfile, writer_parameters);
+               }
+       }
+}
diff --git a/mcs/tools/mdb2ppdb/mdb2ppdb.exe.sources b/mcs/tools/mdb2ppdb/mdb2ppdb.exe.sources
new file mode 100644 (file)
index 0000000..a7157e5
--- /dev/null
@@ -0,0 +1 @@
+mdb2ppdb.cs