public void Close() { MonoSymbolWriter writer = new MonoSymbolWriter(moduleBuilder.FullyQualifiedName); foreach (Method method in methods.Values) { if (method.document != null) { if (method.document.source == null) { method.document.source = new SourceFileEntry(writer.SymbolFile, method.document.url); } ICompileUnit file = new CompileUnitEntry(writer.SymbolFile, method.document.source); SourceMethodBuilder smb = writer.OpenMethod(file, 0, method); for (int i = 0; i < method.offsets.Length; i++) { smb.MarkSequencePoint(method.offsets[i], method.document.source, method.lines[i], method.columns[i], false); } for (int i = 0; i < method.variables.Count; i++) { writer.DefineLocalVariable(i, method.variables[i]); } writer.CloseMethod(); } } writer.WriteSymbolFile(moduleBuilder.ModuleVersionId); }
// <remarks> // If we're compiling with debugging support, this is called between parsing // and code generation to register all the source files with the // symbol writer. // </remarks> static public void DefineSymbolDocuments(MonoSymbolWriter symwriter) { foreach (CompilationUnit unit in compile_units) { unit.DefineSymbolInfo(symwriter); } }
static void Convert(AssemblyDefinition assembly, Stream pdb, MonoSymbolWriter mdb) { try { Converter.Convert(assembly, PdbFile.LoadFunctions(pdb, true), mdb); } catch (Exception e) { Error(e); } }
public void Write(MonoSymbolWriter writer) { LineNumberEntry[] the_lines = new LineNumberEntry [lines.Count]; lines.CopyTo(the_lines, 0); LocalVariableEntry[] locals = method.GetLocalVars(); MethodEntry entry = writer.SymbolFile.DefineMethod( file, Token, null, locals, the_lines, null, null, 0, 0); }
public override void DefineSymbolInfo(MonoSymbolWriter symwriter) { base.DefineSymbolInfo(symwriter); comp_unit = symwriter.DefineCompilationUnit(SourceFileEntry); if (include_files != null) { foreach (SourceFile include in include_files.Values) { include.DefineSymbolInfo(symwriter); comp_unit.AddFile(include.SourceFileEntry); } } }
public virtual void DefineSymbolInfo(MonoSymbolWriter symwriter) { if (guid != null) { file = symwriter.DefineDocument(FullPathName, guid, checksum); } else { file = symwriter.DefineDocument(FullPathName); if (AutoGenerated) { file.SetAutoGenerated(); } } }
private SourceFile GetSourceFile(MonoSymbolWriter mdbArg, PdbFunction function) { var name = (from l in function.Lines where l.File != null select l.File.Name).First(); SourceFile file; if (files.TryGetValue(name, out file)) { return(file); } var entry = mdbArg.DefineDocument(name); var unit = mdbArg.DefineCompilationUnit(entry); file = new SourceFile(unit, entry); files.Add(name, file); return(file); }
public SourceFileEntry CreateSymbolInfo(MonoSymbolWriter symwriter) { if (hidden_lines != null) { hidden_lines.Sort(); } if (guid != null) { file = symwriter.DefineDocument(FullPathName, guid, checksum); } else { file = symwriter.DefineDocument(FullPathName); if (AutoGenerated) { file.SetAutoGenerated(); } } return(file); }
SourceFile GetSourceFile(MonoSymbolWriter mdb, PdbFunction function) { var name = (from l in function.lines where l.file != null select l.file.name).First(); if (name.IndexOf(windowsRootFolder, StringComparison.CurrentCultureIgnoreCase) == 0) { name = name.Replace(@"\", "/"); name = $"{linuxRootFolder}{name.Substring(windowsRootFolder.Length)}"; } SourceFile file; if (files.TryGetValue(name, out file)) { return(file); } var entry = mdb.DefineDocument(name); var unit = mdb.DefineCompilationUnit(entry); file = new SourceFile(unit, entry); files.Add(name, file); return(file); }
internal Converter(MonoSymbolWriter mdb) { this.mdb = mdb; }
public MdbWriter(Guid mvid, string assembly) { this.mvid = mvid; this.writer = new MonoSymbolWriter(assembly); this.source_files = new Dictionary <string, SourceFile> (); }
public static void Convert(AssemblyDefinition assembly, IEnumerable<PdbFunction> functions, MonoSymbolWriter mdb) { var converter = new Converter (mdb); foreach (var function in functions) converter.ConvertFunction (function); mdb.WriteSymbolFile(assembly.MainModule.Mvid); converter = null; }
SourceFile GetSourceFile(MonoSymbolWriter mdb, PdbFunction function) { var name = (from l in function.lines where l.file != null select l.file.name).First (); SourceFile file; if (files.TryGetValue (name, out file)) return file; var entry = mdb.DefineDocument (name); var unit = mdb.DefineCompilationUnit (entry); file = new SourceFile (unit, entry); files.Add (name, file); return file; }
public virtual void Emit() { if (Compiler.Settings.Target == Target.Module) { module_target_attrs = new AssemblyAttributesPlaceholder(module, name); module_target_attrs.CreateContainer(); module_target_attrs.DefineContainer(); module_target_attrs.Define(); module.AddCompilerGeneratedClass(module_target_attrs); } else if (added_modules != null) { ReadModulesAssemblyAttributes(); } if (Compiler.Settings.GenerateDebugInfo) { symbol_writer = new MonoSymbolWriter(file_name); // TODO: global variables SymbolWriter.symwriter = symbol_writer; } module.EmitContainer(); if (module.HasExtensionMethod) { var pa = module.PredefinedAttributes.Extension; if (pa.IsDefined) { SetCustomAttribute(pa.Constructor, AttributeEncoder.Empty); } } if (!wrap_non_exception_throws_custom) { PredefinedAttribute pa = module.PredefinedAttributes.RuntimeCompatibility; if (pa.IsDefined && pa.ResolveBuilder()) { var prop = module.PredefinedMembers.RuntimeCompatibilityWrapNonExceptionThrows.Get(); if (prop != null) { AttributeEncoder encoder = new AttributeEncoder(); encoder.EncodeNamedPropertyArgument(prop, new BoolLiteral(Compiler.BuiltinTypes, true, Location.Null)); SetCustomAttribute(pa.Constructor, encoder.ToArray()); } } } if (declarative_security != null) { #if STATIC foreach (var entry in declarative_security) { Builder.__AddDeclarativeSecurity(entry); } #else throw new NotSupportedException("Assembly-level security"); #endif } CheckReferencesPublicToken(); SetEntryPoint(); }
public MdbWriter(Guid mvid, string assembly) { m_mvid = mvid; m_writer = new MonoSymbolWriter(assembly); m_documents = new Hashtable(); }
public virtual void Emit() { if (Compiler.Settings.Target == Target.Module) { module_target_attrs = new AssemblyAttributesPlaceholder(module, name); module_target_attrs.CreateType(); module_target_attrs.DefineType(); module_target_attrs.Define(); module.AddCompilerGeneratedClass(module_target_attrs); } else if (added_modules != null) { ReadModulesAssemblyAttributes(); } if (Compiler.Settings.GenerateDebugInfo) { symbol_writer = new MonoSymbolWriter(file_name); // Register all source files with symbol writer foreach (var source in Compiler.SourceFiles) { source.DefineSymbolInfo(symbol_writer); } // TODO: global variables SymbolWriter.symwriter = symbol_writer; } module.Emit(); if (module.HasExtensionMethod) { var pa = module.PredefinedAttributes.Extension; if (pa.IsDefined) { SetCustomAttribute(pa.Constructor, AttributeEncoder.Empty); } } if (!wrap_non_exception_throws_custom) { PredefinedAttribute pa = module.PredefinedAttributes.RuntimeCompatibility; if (pa.IsDefined && pa.ResolveBuilder()) { var prop = module.PredefinedMembers.RuntimeCompatibilityWrapNonExceptionThrows.Get(); if (prop != null) { AttributeEncoder encoder = new AttributeEncoder(); encoder.EncodeNamedPropertyArgument(prop, new BoolLiteral(Compiler.BuiltinTypes, true, Location.Null)); SetCustomAttribute(pa.Constructor, encoder.ToArray()); } } } if (declarative_security != null) { #if STATIC foreach (var entry in declarative_security) { Builder.__AddDeclarativeSecurity(entry); } #else var args = new PermissionSet[3]; declarative_security.TryGetValue(SecurityAction.RequestMinimum, out args[0]); declarative_security.TryGetValue(SecurityAction.RequestOptional, out args[1]); declarative_security.TryGetValue(SecurityAction.RequestRefuse, out args[2]); builder_extra.AddPermissionRequests(args); #endif } CheckReferencesPublicToken(); SetEntryPoint(); }
public Converter(MonoSymbolWriter mdb) { this.mdb = mdb; }
public MdbWriter(ModuleDefinition module, string assembly) { this.module = module; this.writer = new MonoSymbolWriter(assembly); this.source_files = new Dictionary <string, SourceFile> (); }
public static void Reset() { symwriter = null; }
internal static void Convert(AssemblyDefinition assembly, IEnumerable <PdbFunction> functions, MonoSymbolWriter mdb, string windowsRootFolder, string linuxRootFolder) { var converter = new Converter(mdb) { linuxRootFolder = linuxRootFolder, windowsRootFolder = windowsRootFolder }; foreach (var function in functions) { converter.ConvertFunction(function); } mdb.WriteSymbolFile(assembly.MainModule.Mvid); }
public static void Convert(AssemblyDefinition assembly, IEnumerable <PdbFunction> functions, MonoSymbolWriter mdb) { var converter = new Converter(mdb); foreach (var function in functions) { converter.ConvertFunction(function); } mdb.WriteSymbolFile(assembly.MainModule.Mvid); }
public void Initialize(IntPtr emitter, string filename, bool fFullBuild) { msw = new MonoSymbolWriter (filename); }