public static void EmitObject( string objectFilePath, EcmaModule componentModule, IEnumerable <DependencyNode> nodes, NodeFactory factory, bool generateMapFile, bool generateMapCsvFile, bool generatePdbFile, string pdbPath, bool generatePerfMapFile, string perfMapPath, bool generateProfileFile, CallChainProfile callChainProfile, int customPESectionAlignment) { Console.WriteLine($@"Emitting R2R PE file: {objectFilePath}"); ReadyToRunObjectWriter objectWriter = new ReadyToRunObjectWriter( objectFilePath, componentModule, nodes, factory, generateMapFile: generateMapFile, generateMapCsvFile: generateMapCsvFile, generatePdbFile: generatePdbFile, pdbPath: pdbPath, generatePerfMapFile: generatePerfMapFile, perfMapPath: perfMapPath, generateProfileFile: generateProfileFile, callChainProfile, customPESectionAlignment); objectWriter.EmitPortableExecutable(); }
public ReadyToRunObjectWriter( string objectFilePath, EcmaModule componentModule, IEnumerable <string> inputFiles, IEnumerable <DependencyNode> nodes, NodeFactory factory, bool generateMapFile, bool generateMapCsvFile, bool generatePdbFile, string pdbPath, bool generatePerfMapFile, string perfMapPath, int perfMapFormatVersion, bool generateProfileFile, CallChainProfile callChainProfile, int customPESectionAlignment) { _objectFilePath = objectFilePath; _componentModule = componentModule; _inputFiles = inputFiles; _nodes = nodes; _nodeFactory = factory; _customPESectionAlignment = customPESectionAlignment; _generateMapFile = generateMapFile; _generateMapCsvFile = generateMapCsvFile; _generatePdbFile = generatePdbFile; _pdbPath = pdbPath; _generatePerfMapFile = generatePerfMapFile; _perfMapPath = perfMapPath; _perfMapFormatVersion = perfMapFormatVersion; bool generateMap = (generateMapFile || generateMapCsvFile); bool generateSymbols = (generatePdbFile || generatePerfMapFile); if (generateMap || generateSymbols || generateProfileFile) { _outputInfoBuilder = new OutputInfoBuilder(); if (generateMap) { _mapFileBuilder = new MapFileBuilder(_outputInfoBuilder); } if (generateSymbols) { _symbolFileBuilder = new SymbolFileBuilder(_outputInfoBuilder, _nodeFactory.Target); } if (generateProfileFile) { _profileFileBuilder = new ProfileFileBuilder(_outputInfoBuilder, callChainProfile, _nodeFactory.Target); } } }
public ProfileFileBuilder(OutputInfoBuilder outputInfoBuilder, CallChainProfile callChainProfile, TargetDetails targetDetails) { _outputInfoBuilder = outputInfoBuilder; _callChainProfile = callChainProfile; _targetDetails = targetDetails; _pageSize = _targetDetails.Architecture switch { TargetArchitecture.X86 => 0x00001000, TargetArchitecture.X64 => 0x00010000, TargetArchitecture.ARM => 0x00001000, TargetArchitecture.ARM64 => 0x00010000, _ => throw new NotImplementedException(_targetDetails.Architecture.ToString()) }; }
public static void EmitObject( string objectFilePath, EcmaModule componentModule, IEnumerable <string> inputFiles, IEnumerable <DependencyNode> nodes, NodeFactory factory, bool generateMapFile, bool generateMapCsvFile, bool generatePdbFile, string pdbPath, bool generatePerfMapFile, string perfMapPath, int perfMapFormatVersion, bool generateProfileFile, CallChainProfile callChainProfile, int customPESectionAlignment) { ReadyToRunObjectWriter objectWriter = new ReadyToRunObjectWriter( objectFilePath, componentModule, inputFiles, nodes, factory, generateMapFile: generateMapFile, generateMapCsvFile: generateMapCsvFile, generatePdbFile: generatePdbFile, pdbPath: pdbPath, generatePerfMapFile: generatePerfMapFile, perfMapPath: perfMapPath, perfMapFormatVersion: perfMapFormatVersion, generateProfileFile: generateProfileFile, callChainProfile, customPESectionAlignment); objectWriter.EmitPortableExecutable(); }