Pārlūkot izejas kodu

* Fix for RTTI alignment from Paul

git-svn-id: trunk@14564 -
pierre 15 gadi atpakaļ
vecāks
revīzija
9896f48317
1 mainītis faili ar 6 papildinājumiem un 0 dzēšanām
  1. 6 0
      compiler/ncgrtti.pas

+ 6 - 0
compiler/ncgrtti.pas

@@ -733,6 +733,9 @@ implementation
                  { write name of result type }
                  { write name of result type }
                  write_rtti_name(def.returndef);
                  write_rtti_name(def.returndef);
 
 
+                 if (tf_requires_proper_alignment in target_info.flags) then
+                   current_asmdata.asmlists[al_rtti].concat(Cai_align.Create(sizeof(TConstPtrUint)));
+
                  { write result typeinfo }
                  { write result typeinfo }
                  current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def.returndef,fullrtti)))
                  current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def.returndef,fullrtti)))
                end;
                end;
@@ -740,6 +743,9 @@ implementation
                { write calling convention }
                { write calling convention }
                current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(ProcCallOptionToCallConv[def.proccalloption]));
                current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(ProcCallOptionToCallConv[def.proccalloption]));
 
 
+               if (tf_requires_proper_alignment in target_info.flags) then
+                 current_asmdata.asmlists[al_rtti].concat(Cai_align.Create(sizeof(TConstPtrUint)));
+
                { write params typeinfo }
                { write params typeinfo }
                for i:=0 to def.paras.count-1 do
                for i:=0 to def.paras.count-1 do
                  if not(vo_is_hidden_para in tparavarsym(def.paras[i]).varoptions) then
                  if not(vo_is_hidden_para in tparavarsym(def.paras[i]).varoptions) then