diff --git a/compiler/cgbase.pas b/compiler/cgbase.pas index 19925d2243..9b9331b04e 100644 --- a/compiler/cgbase.pas +++ b/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 diff --git a/compiler/symdef.pas b/compiler/symdef.pas index df5c36c9d2..8719e30b50 100644 --- a/compiler/symdef.pas +++ b/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