Browse Source

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 years ago
parent
commit
988ed6c191
1 changed files with 6 additions and 0 deletions
  1. 6 0
      compiler/ncgvmt.pas

+ 6 - 0
compiler/ncgvmt.pas

@@ -932,6 +932,12 @@ implementation
 {$endif vtentry}
 {$endif vtentry}
          if is_class(_class) then
          if is_class(_class) then
            current_asmdata.asmlists[al_globals].concatlist(templist);
            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;
         templist.Free;
       end;
       end;