Bladeren bron

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 jaren geleden
bovenliggende
commit
988ed6c191
1 gewijzigde bestanden met toevoegingen van 6 en 0 verwijderingen
  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;