Hello,
I've just committed a large change to FPC's trunk repository (version 2.3.1; 2.1.x is unaffected), which does the following:
* new internal set format for big endian systems. Advantages:
* varsets ({$packset x}) are now supported on big endian targets
* gdb now displays sets properly on big endian systems
* cleanup of generic set code (in, include/exclude, helpers), all based on "bitpacked array[] of 0..1" now
* there are no helpers available yet to convert sets from the old to the new format, because the set format will change again slightly in the near future (so that e.g. a set of 24..31 will be stored in 1 byte), and creating two classes of set conversion helpers would confuse things (i.e., it's not recommended to use trunk currently for
programs which load sets stored to disk by big endian programs compiled
by previous FPC versions)
* cross-endian compiling has been tested and still works, but one case
is not supported: compiling a compiler for a different endianess using a starting compiler from before the current revision (so first
cycle natively, and then use the newly created compiler to create a cross-compiler)
Especially keep in mind point 3 if you compile new FPC compilers from source yourself, and point 2 if you use trunk/2.3.1 for your own usage rather than fixes_2_2/2.1.x
Over time, these changes will go into fixes_2_2 as well, but only after things have settled down and when the conversion helpers are available.
Jonas
