Пример #1
0
        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();
        }
Пример #2
0
 public ReflectionInvokeMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__method_to_entrypoint_map_End", true);
     _externalReferences = externalReferences;
 }
Пример #3
0
 public MetadataNode()
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, ((ISymbolNode)this).MangledName + "End");
 }
Пример #4
0
 public ArrayMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__array_type_map_End", true);
     _externalReferences = externalReferences;
 }
Пример #5
0
 public ClassConstructorContextMap(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__type_to_cctorContext_map_End", true);
     _externalReferences = externalReferences;
 }
Пример #6
0
 public ReflectionFieldMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, this.GetMangledName() + "End");
     _externalReferences = externalReferences;
 }
Пример #7
0
 public TypeMetadataMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, ((ISymbolNode)this).MangledName + "End");
     _externalReferences = externalReferences;
 }
Пример #8
0
 public ReflectionFieldMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__field_to_offset_map_End", true);
     _externalReferences = externalReferences;
 }
Пример #9
0
 public MetadataNode()
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__embedded_metadata_End", true);
 }
Пример #10
0
 public EHInfoNode(string mangledName)
 {
     _name          = mangledName + "___EHInfo";
     _ehInfoBuilder = new ArrayBuilder <byte>();
     _endSymbol     = new ObjectAndOffsetSymbolNode(this, 0, mangledName + "___EHInfo_End", true);
 }
 public ArrayOfEmbeddedDataNode(string startSymbolMangledName, string endSymbolMangledName, IComparer<EmbeddedObjectNode> nodeSorter)
 {
     _startSymbol = new ObjectAndOffsetSymbolNode(this, 0, startSymbolMangledName);
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, endSymbolMangledName);
     _sorter = nodeSorter;
 }
Пример #12
0
 public ClassConstructorContextMap(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, this.GetMangledName() + "End");
     _externalReferences = externalReferences;
 }
Пример #13
0
 public MetadataNode()
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, this.GetMangledName() + "End");
 }
Пример #14
0
 public TypeMetadataMapNode(ExternalReferencesTableNode externalReferences)
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, "__type_to_metadata_map_End", true);
     _externalReferences = externalReferences;
 }
 public ExternalReferencesTableNode()
 {
     _endSymbol = new ObjectAndOffsetSymbolNode(this, 0, ((ISymbolNode)this).MangledName + "End");
 }