From 91a799831111d1e8d25d0464b6e2d99ee83f3689 Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Wed, 6 Apr 2011 19:15:53 +0200 Subject: [PATCH] linker: add support for non default debug symbol format --- .../linker/Mono.Linker.Steps/OutputStep.cs | 6 ++++- mcs/tools/linker/Mono.Linker/LinkContext.cs | 26 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs b/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs index d2b137caf07..874d25d5b18 100644 --- a/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs +++ b/mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs @@ -30,6 +30,7 @@ using System; using System.IO; using Mono.Cecil; +using Mono.Cecil.Cil; namespace Mono.Linker.Steps { @@ -83,7 +84,10 @@ namespace Mono.Linker.Steps { if (!assembly.MainModule.HasSymbols) return parameters; - parameters.WriteSymbols = true; + if (Context.SymbolWriterProvider != null) + parameters.SymbolWriterProvider = Context.SymbolWriterProvider; + else + parameters.WriteSymbols = true; return parameters; } diff --git a/mcs/tools/linker/Mono.Linker/LinkContext.cs b/mcs/tools/linker/Mono.Linker/LinkContext.cs index a9ce05fb3ce..183daf80478 100644 --- a/mcs/tools/linker/Mono.Linker/LinkContext.cs +++ b/mcs/tools/linker/Mono.Linker/LinkContext.cs @@ -29,7 +29,9 @@ using System; using System.Collections; using System.IO; + using Mono.Cecil; +using Mono.Cecil.Cil; namespace Mono.Linker { @@ -45,6 +47,8 @@ namespace Mono.Linker { AssemblyResolver _resolver; ReaderParameters _readerParameters; + ISymbolReaderProvider _symbolReaderProvider; + ISymbolWriterProvider _symbolWriterProvider; AnnotationStore _annotations; @@ -79,6 +83,19 @@ namespace Mono.Linker { get { return _resolver; } } + public ISymbolReaderProvider SymbolReaderProvider { + get { return _symbolReaderProvider; } + set { + _symbolReaderProvider = value; + _readerParameters.SymbolReaderProvider = value; + } + } + + public ISymbolWriterProvider SymbolWriterProvider { + get { return _symbolWriterProvider; } + set { _symbolWriterProvider = value; } + } + public LinkContext (Pipeline pipeline) : this (pipeline, new AssemblyResolver ()) { @@ -149,7 +166,14 @@ namespace Mono.Linker { public void SafeReadSymbols (AssemblyDefinition assembly) { try { - assembly.MainModule.ReadSymbols (); + if (_symbolReaderProvider != null) { + var symbolReader = _symbolReaderProvider.GetSymbolReader ( + assembly.MainModule, + assembly.MainModule.FullyQualifiedName); + + assembly.MainModule.ReadSymbols (symbolReader); + } else + assembly.MainModule.ReadSymbols (); } catch {} } -- 2.25.1