* Updated internal declarations of RTTI structures to match their counterparts in typinfo unit and actual data generated by compiler. It went unnoticed this far because fields whose location differ with and without 'packed' record attribute are not used by internal routines, and tests use declarations from typinfo unit (the declarations in question are not in interface, so tests cannot be done against them).

This eliminates a lot of unaligned code on SPARC and ARM. 

git-svn-id: trunk@26845 -
This commit is contained in:
sergei 2014-02-22 19:26:25 +00:00
parent b26e36431a
commit ae81e0889b

View File

@ -18,7 +18,11 @@
type
PRecordElement=^TRecordElement;
TRecordElement=packed record
TRecordElement=
{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
packed
{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
record
TypeInfo: Pointer;
{$ifdef VER2_6}
Offset: Longint;
@ -28,14 +32,22 @@ type
end;
PRecordInfo=^TRecordInfo;
TRecordInfo=packed record
TRecordInfo=
{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
packed
{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
record
Size: Longint;
Count: Longint;
{ Elements: array[count] of TRecordElement }
end;
PArrayInfo=^TArrayInfo;
TArrayInfo=packed record
TArrayInfo=
{$ifndef FPC_REQUIRES_PROPER_ALIGNMENT}
packed
{$endif FPC_REQUIRES_PROPER_ALIGNMENT}
record
Size: SizeInt;
ElCount: SizeInt;
ElInfo: Pointer;