소스 검색

Generate an indirect VMT symbol for each generated VMT.

ncgvmt.pas, TVMTWriter:
  * writevmt: write a symbol with the indirect VMT name that references the direct VMT symbol

git-svn-id: branches/svenbarth/packages@28340 -
svenbarth 11 년 전
부모
커밋
988ed6c191
1개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      compiler/ncgvmt.pas

+ 6 - 0
compiler/ncgvmt.pas

@@ -932,6 +932,12 @@ implementation
 {$endif vtentry}
          if is_class(_class) then
            current_asmdata.asmlists[al_globals].concatlist(templist);
+
+        { write indirect VMT symbol }
+        current_asmdata.asmlists[al_globals].concat(Tai_symbol.Createname_global(_class.vmt_mangledname(true),AT_DATA,0));
+        current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(_class.vmt_mangledname(false),AT_DATA,0));
+        current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname(true)));
+
         templist.Free;
       end;