Example #1
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.GetMangledMethodName(_method));
 }
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(_symbolName);
 }
Example #3
0
 // Implementation of ISymbolNode that makes this node act as a symbol for the canonical body
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     _canonicalThunk.AppendMangledName(nameMangler, sb);
 }
Example #4
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("ProfileDataNode->");
     _methodNode.AppendMangledName(nameMangler, sb);
 }
Example #5
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append(_parentNode._startSymbolMangledName).Append("_").Append(_id.ToStringInvariant());
 }
Example #6
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__nativemodule_");
     sb.Append(_moduleName);
 }
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append("__ReadyToRunAttributePresenceFilter__");
     sb.Append(_module.Assembly.GetName().Name);
 }
Example #8
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append($@"NewArraySignature: ");
     sb.Append(nameMangler.GetMangledTypeName(_arrayType));
 }
 public abstract void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb);
        public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
        {
            string prefix = _isUnboxingStub ? "__fatunboxpointer_" : "__fatpointer_";

            sb.Append(prefix).Append(nameMangler.GetMangledMethodName(Method));
        }
Example #11
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__TypeThreadStaticIndex_")
     .Append(NodeFactory.NameMangler.GetMangledTypeName(_type));
 }
Example #12
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("_StaticsInfoHashtableNode");
 }
Example #13
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("GCRefMap->");
     sb.Append(_importSection.Name);
 }
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__InterfaceDispatchMap_").Append(nameMangler.SanitizeName(nameMangler.GetMangledTypeName(_type)));
 }
Example #15
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("_InitialInterfaceDispatchStub");
 }
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append("__ReadyToRunInstrumentationDataTable");
 }
 private void AppendExternCPrefix(Utf8StringBuilder sb)
 {
 }
Example #18
0
        /// <summary>
        /// Add an ObjectData block to a given section.
        /// </summary>
        /// <param name="data">Block to add</param>
        /// <param name="sectionIndex">Section index</param>
        /// <param name="name">Node name to emit in the map file</param>
        /// <param name="mapFile">Optional map file to emit</param>
        public void AddObjectData(ObjectNode.ObjectData objectData, int sectionIndex, string name, TextWriter mapFile)
        {
            Section section = _sections[sectionIndex];

            // Calculate alignment padding - apparently ObjectDataBuilder can produce an alignment of 0
            int alignedOffset = section.Content.Count;

            if (objectData.Alignment > 1)
            {
                alignedOffset = (section.Content.Count + objectData.Alignment - 1) & -objectData.Alignment;
                int padding = alignedOffset - section.Content.Count;
                if (padding > 0)
                {
                    if ((section.Characteristics & SectionCharacteristics.ContainsCode) != 0)
                    {
                        uint cp = _codePadding;
                        while (padding >= sizeof(uint))
                        {
                            section.Content.WriteUInt32(cp);
                            padding -= sizeof(uint);
                        }
                        if (padding >= 2)
                        {
                            section.Content.WriteUInt16(unchecked ((ushort)cp));
                            cp >>= 16;
                        }
                        if ((padding & 1) != 0)
                        {
                            section.Content.WriteByte(unchecked ((byte)cp));
                        }
                    }
                    else
                    {
                        section.Content.WriteBytes(0, padding);
                    }
                }
            }

            if (mapFile != null)
            {
                mapFile.WriteLine($@"S{sectionIndex}+0x{alignedOffset:X4}..{(alignedOffset + objectData.Data.Length):X4}: {objectData.Data.Length:X4} * {name}");
            }

            section.Content.WriteBytes(objectData.Data);

            if (objectData.DefinedSymbols != null)
            {
                foreach (ISymbolDefinitionNode symbol in objectData.DefinedSymbols)
                {
                    if (mapFile != null)
                    {
                        Utf8StringBuilder sb = new Utf8StringBuilder();
                        symbol.AppendMangledName(GetNameMangler(), sb);
                        int sectionRelativeOffset = alignedOffset + symbol.Offset;
                        mapFile.WriteLine($@"  +0x{sectionRelativeOffset:X4}: {sb.ToString()}");
                    }
                    _symbolMap.Add(symbol, new SymbolTarget(
                                       sectionIndex: sectionIndex,
                                       offset: alignedOffset + symbol.Offset,
                                       size: objectData.Data.Length));
                }
            }

            if (objectData.Relocs != null && objectData.Relocs.Length != 0)
            {
                section.PlacedObjectDataToRelocate.Add(new PlacedObjectData(alignedOffset, objectData));
            }
        }
Example #19
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append("__ReadyToRunInliningInfoTable__");
     sb.Append(_module.Assembly.GetName().Name);
 }
Example #20
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__GenericTypesTemplateMap");
 }
Example #21
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(GetMangledName(nameMangler, _targetMethod));
 }
Example #22
0
 public virtual void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__EEType_").Append(nameMangler.GetMangledTypeName(_type));
 }
Example #23
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__type_to_metadata_map");
 }
Example #24
0
 public virtual void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.NodeMangler.EEType(_type));
 }
Example #25
0
 // Implementation of ISymbolNode that makes this node act as a symbol for the canonical body
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     CanonicalMethodNode.AppendMangledName(nameMangler, sb);
 }
Example #26
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix);
     sb.Append($"__CorHeader_{_module.Assembly.GetName().Name}");
 }
Example #27
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__interface_gvm_table");
 }
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(nameMangler.CompilationUnitPrefix).Append("__method_to_entrypoint_map");
 }
Example #29
0
 public override void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(MangledNamePrefix).Append(NodeFactory.NameMangler.GetMangledTypeName(_owningType));
 }
Example #30
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append(GetName(null));
 }