/// <summary> /// Initialize the WindowsDebugData emission pipeline. /// Cannot be called twice /// </summary> /// <param name="nonSectionBasedDebugInfoWriter">debug$T section generation interface. If null, use managed implementation that generates a object file section.</param> /// <param name="mergedAssemblyRecords">record of how assemblies are merged. If null, do not genearate extended debug information</param> /// <param name="graph">Graph to attach WindowsDebugData to</param> public void Init(ITypesDebugInfoWriter nonSectionBasedDebugInfoWriter, MergedAssemblyRecords mergedAssemblyRecords, DependencyAnalyzerBase <NodeFactory> graph) { Debug.Assert(_userDefinedTypeDescriptor == null); // Cannot be called twice Debug.Assert(graph != null); _debugNeedTypeIndicesStore = new WindowsDebugNeedTypeIndicesStoreNode(); if (mergedAssemblyRecords != null) { _debugPseudoAssemblySection = new WindowsDebugPseudoAssemblySection(_nodeFactory.TypeSystemContext); _debugMergedAssembliesSection = new WindowsDebugMergedAssembliesSection(mergedAssemblyRecords); _debugILImagesSection = new WindowsDebugILImagesSection(mergedAssemblyRecords); _debugManagedNativeDictionaryInfoSection = new WindowsDebugManagedNativeDictionaryInfoSection(); } bool is64Bit = _nodeFactory.Target.PointerSize == 8 ? true : false; if (nonSectionBasedDebugInfoWriter != null) { _userDefinedTypeDescriptor = new UserDefinedTypeDescriptor(nonSectionBasedDebugInfoWriter, is64Bit, _nodeFactory.Target.Abi); } else { _debugTypeRecordsSection = new WindowsDebugTypeRecordsSection(new DebugInfoWriter(), _nodeFactory); _userDefinedTypeDescriptor = new UserDefinedTypeDescriptor(_debugTypeRecordsSection, is64Bit, _nodeFactory.Target.Abi); } if (mergedAssemblyRecords != null) { _debugTypeSignatureMapSection = new WindowsDebugTypeSignatureMapSection(_userDefinedTypeDescriptor); _debugMethodSignatureMapSection = new WindowsDebugMethodSignatureMapSection(); } graph.AddRoot(_debugNeedTypeIndicesStore, "Debug Force All EETypes to have type indices"); if (_debugManagedNativeDictionaryInfoSection != null) { graph.AddRoot(_debugManagedNativeDictionaryInfoSection, "Debug Method MDToken map"); } if (_debugMethodSignatureMapSection != null) { graph.AddRoot(_debugMethodSignatureMapSection, "Debug Method MDToken map"); } if (_debugTypeSignatureMapSection != null) { graph.AddRoot(_debugTypeSignatureMapSection, "Debug Type MDToken map"); } if (_debugILImagesSection != null) { graph.AddRoot(_debugILImagesSection, "Debug Merged ILImages"); } if (_debugMergedAssembliesSection != null) { graph.AddRoot(_debugMergedAssembliesSection, "Debug MergedAssemblyRecords"); } if (_debugPseudoAssemblySection != null) { graph.AddRoot(_debugPseudoAssemblySection, "Debug PseudoAssembly"); } if (_debugTypeRecordsSection != null) { graph.AddRoot(_debugTypeRecordsSection, "Debug Type Records"); } }
public UserDefinedTypeDescriptor(ITypesDebugInfoWriter objectWriter) { _objectWriter = objectWriter; }
public UserDefinedTypeDescriptor(ITypesDebugInfoWriter objectWriter, NodeFactory nodeFactory) { _objectWriter = objectWriter; _nodeFactory = nodeFactory; }
public UserDefinedTypeDescriptor(ITypesDebugInfoWriter objectWriter, bool is64Bit, TargetAbi abi) { _objectWriter = objectWriter; _is64bit = is64Bit; _abi = abi; }