using System.IO;
using Mono.Cecil;
+using Mono.Cecil.Cil;
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;
}
using System;
using System.Collections;
using System.IO;
+
using Mono.Cecil;
+using Mono.Cecil.Cil;
namespace Mono.Linker {
AssemblyResolver _resolver;
ReaderParameters _readerParameters;
+ ISymbolReaderProvider _symbolReaderProvider;
+ ISymbolWriterProvider _symbolWriterProvider;
AnnotationStore _annotations;
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 ())
{
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 {}
}