Преглед на файлове

* fixed class field info alignment

florian преди 20 години
родител
ревизия
5fb0678de2
променени са 2 файла, в които са добавени 18 реда и са изтрити 3 реда
  1. 5 2
      compiler/cgbase.pas
  2. 13 1
      compiler/symdef.pas

+ 5 - 2
compiler/cgbase.pas

@@ -56,7 +56,7 @@ interface
 
        { since we have only 16 offsets, we need to be able to specify the high
          and low 16 bits of the address of a symbol                            }
-       trefaddr = (addr_no,addr_full,addr_hi,addr_lo);
+       trefaddr = (addr_no,addr_full,addr_hi,addr_lo,addr_pic);
 
        {# Generic opcodes, which must be supported by all processors
        }
@@ -597,7 +597,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.99  2004-12-12 10:50:34  florian
+  Revision 1.100  2004-12-27 15:54:54  florian
+    * fixed class field info alignment
+
+  Revision 1.99  2004/12/12 10:50:34  florian
     * fixed operand size calculation for sse operands
     + all nasm assembler targets to help page output added
 

+ 13 - 1
compiler/symdef.pas

@@ -5572,6 +5572,9 @@ implementation
          if needs_prop_entry(tsym(sym)) and
           (tsym(sym).typ=fieldvarsym) then
           begin
+{$ifdef cpurequiresproperalignment}
+             rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
              rttiList.concat(Tai_const.Create_32bit(tfieldvarsym(sym).fieldoffset));
              hp:=searchclasstablelist(tobjectdef(tfieldvarsym(sym).vartype.def));
              if not(assigned(hp)) then
@@ -5601,6 +5604,9 @@ implementation
          symtable.foreach({$ifdef FPC}@{$endif}count_published_fields,nil);
          rttiList.concat(Tai_label.Create(fieldtable));
          rttiList.concat(Tai_const.Create_16bit(count));
+{$ifdef cpurequiresproperalignment}
+         rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
          rttiList.concat(Tai_const.Create_sym(classtable));
          symtable.foreach({$ifdef FPC}@{$endif}writefields,nil);
 
@@ -5608,6 +5614,9 @@ implementation
          rttilist.concat(tai_align.create(const_align(sizeof(aint))));
          rttiList.concat(Tai_label.Create(classtable));
          rttiList.concat(Tai_const.Create_16bit(tablecount));
+{$ifdef cpurequiresproperalignment}
+         rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
          hp:=tclasslistitem(classtablelist.first);
          while assigned(hp) do
            begin
@@ -6155,7 +6164,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.284  2004-12-07 15:41:11  peter
+  Revision 1.285  2004-12-27 15:54:54  florian
+    * fixed class field info alignment
+
+  Revision 1.284  2004/12/07 15:41:11  peter
     * modified algorithm for shortening manglednames to fix compilation
       of procedures with a lot of longtypenames that are equal, see
       tw343