[fpc-pascal] Packed record
florian at freepascal.org
Thu Oct 20 09:47:12 CEST 2005
Adriaan van Os wrote:
> Florian Klaempfl wrote:
>> Carsten Bager wrote:
>>> I am using the compiler on an embedded Arm7 platform (no
>>> operating system). So fare things are working ok, but now I have
>>> discovered a problem when packing records (Vi have to maintain
>>> bindery compatibility with older systems)
>>> If I have a packed record like this
>>> Test_typ= packed record
>>> The output is wrong.
>> Usual ARM cores can't handle unaligned memory accesses and on e.g.
>> arm-linux you
>> would get a sigbus exception on your code.
>>> If I remove "Packed" the output is OK.
>> What can do is:
>> - modify your pascal code:
>> move(l,Test.i,sizeof(Test.i)); // move can handle unaligned access
>> and that how
>> C code usually solves it
>> - add an exception handler to your OS to catch unaligned access and
>> fix things
>> but emulating the memory access
> - or fix the compiler to ignore "packed" for ARM. This could be a
> compiler switch, on by default for ARM (gpc has --ignore-packed).
No. He needs to maintain binary compatibility with an older system so this is no
option, see initial post.
More information about the fpc-pascal