public override ObjectData GetData(NodeFactory factory, bool relocsOnly = false) { var byteArray = _ehInfoBuilder.ToArray(); _endSymbol.SetSymbolOffset(byteArray.Length); return(new ObjectData(byteArray, _relocs, alignment: 1, definedSymbols: new ISymbolDefinitionNode[] { this, _endSymbol })); }
public override ObjectData GetData(NodeFactory factory, bool relocsOnly = false) { ObjectDataBuilder objData = new ObjectDataBuilder(factory); objData.RequirePointerAlignment(); objData.DefinedSymbols.Add(this); ObjectAndOffsetSymbolNode startNode = new ObjectAndOffsetSymbolNode(this, 0, "__modules_a"); ObjectAndOffsetSymbolNode endNode = new ObjectAndOffsetSymbolNode(this, 0, "__modules_z"); if (factory.Target.OperatingSystem != Internal.TypeSystem.TargetOS.Windows) { // Temporary work-around for Linux / OSX until CLI is updated objData.DefinedSymbols.Add(startNode); } objData.EmitPointerReloc(factory.ReadyToRunHeader); if (factory.Target.OperatingSystem != Internal.TypeSystem.TargetOS.Windows) { // Temporary work-around for Linux / OSX until CLI is updated endNode.SetSymbolOffset(objData.CountBytes); objData.DefinedSymbols.Add(endNode); objData.EmitZeroPointer(); } return objData.ToObjectData(); }
public override ObjectData GetData(NodeFactory factory, bool relocsOnly = false) { ObjectDataBuilder objData = new ObjectDataBuilder(factory); objData.RequirePointerAlignment(); objData.DefinedSymbols.Add(this); ObjectAndOffsetSymbolNode startNode = new ObjectAndOffsetSymbolNode(this, 0, "__modules_a"); ObjectAndOffsetSymbolNode endNode = new ObjectAndOffsetSymbolNode(this, 0, "__modules_z"); if (factory.Target.OperatingSystem != Internal.TypeSystem.TargetOS.Windows) { // Temporary work-around for Linux / OSX until CLI is updated objData.DefinedSymbols.Add(startNode); } objData.EmitPointerReloc(factory.ReadyToRunHeader); if (factory.Target.OperatingSystem != Internal.TypeSystem.TargetOS.Windows) { // Temporary work-around for Linux / OSX until CLI is updated endNode.SetSymbolOffset(objData.CountBytes); objData.DefinedSymbols.Add(endNode); objData.EmitZeroPointer(); } return(objData.ToObjectData()); }