Jelajahi Sumber

* properly align rtti for orddefs

git-svn-id: trunk@42448 -
florian 6 tahun lalu
induk
melakukan
3206ac3508
2 mengubah file dengan 8 tambahan dan 0 penghapusan
  1. 6 0
      compiler/ncgrtti.pas
  2. 2 0
      compiler/symconst.pas

+ 6 - 0
compiler/ncgrtti.pas

@@ -1089,6 +1089,11 @@ implementation
               defaultpacking,reqalign,
               targetinfos[target_info.system]^.alignment.recordalignmin);
             write_common_rtti_data(tcb,def,rt);
+            tcb.begin_anonymous_record(
+              internaltypeprefixName[itp_rtti_ord_middle]+elesize,
+              defaultpacking,reqalign,
+              targetinfos[target_info.system]^.alignment.recordalignmin,
+              targetinfos[target_info.system]^.alignment.maxCrecordalign);
             tcb.emit_ord_const(byte(trans[def.ordtype]),u8inttype);
             tcb.begin_anonymous_record(
               internaltypeprefixName[itp_rtti_ord_inner]+elesize,
@@ -1114,6 +1119,7 @@ implementation
             end;
             tcb.end_anonymous_record;
             tcb.end_anonymous_record;
+            tcb.end_anonymous_record;
           end;
 
         procedure dointeger(typekind:byte);inline;

+ 2 - 0
compiler/symconst.pas

@@ -735,6 +735,7 @@ type
     itp_rtti_attr_list,
     itp_rtti_attr_entry,
     itp_rtti_ord_outer,
+    itp_rtti_ord_middle,
     itp_rtti_ord_inner,
     itp_rtti_ord_64bit,
     itp_rtti_normal_array,
@@ -880,6 +881,7 @@ inherited_objectoptions : tobjectoptions = [oo_has_virtual,oo_has_private,oo_has
        '$rtti_attr_list$',
        '$rtti_attr_entry$',
        '$rtti_ord_outer$',
+       '$rtti_ord_middle$',
        '$rtti_ord_inner$',
        '$rtti_ord_64bit$',
        '$rtti_normal_array$',