예제 #1
0
        // Returns size of the emitted symbol reference
        public int EmitSymbolReference(ISymbolNode target, int delta, RelocType relocType)
        {
            _sb.Clear();
            AppendExternCPrefix(_sb);
            target.AppendMangledName(_nodeFactory.NameMangler, _sb);

            return(EmitSymbolRef(_sb, relocType, delta));
        }
예제 #2
0
        public static string GetMangledName(this ISymbolNode symbolNode, NameMangler nameMangler)
        {
            Utf8StringBuilder sb = s_cachedUtf8StringBuilder;

            if (sb == null)
            {
                sb = new Utf8StringBuilder();
            }

            symbolNode.AppendMangledName(nameMangler, sb);
            string ret = sb.ToString();

            sb.Clear();
            s_cachedUtf8StringBuilder = sb;

            return(ret);
        }
예제 #3
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("RVAFieldNode->");
     _sectionStartNode.AppendMangledName(nameMangler, sb);
     sb.Append($":{_sectionRelativeOffset:X4}");
 }
예제 #4
0
 public void AppendMangledName(NameMangler nameMangler, Utf8StringBuilder sb)
 {
     sb.Append("__indirection");
     _indirectedNode.AppendMangledName(nameMangler, sb);
 }
예제 #5
0
        // Returns size of the emitted symbol reference
        public int EmitSymbolReference(ISymbolNode target, int delta, RelocType relocType)
        {
            _sb.Clear();
            AppendExternCPrefix(_sb);
            target.AppendMangledName(NodeFactory.NameMangler, _sb);

            return EmitSymbolRef(_sb, relocType, delta);
        }