On 2 July 2012 08:45, Ray Newman wrote: > Hi, > > I have an implementation of the MUMPS language that has been in use for approx 12 years on the x86 under FreeBSD, linux and OSX. > > In the code there is the following structure definition which describes an on disk structure and hence can't really be changed. > > typedef struct DB_BLOCK // database block layout > { u_char type; // block type > u_char flags; // flags > u_short spare; // future > u_int right_ptr; // right pointer > u_short last_idx; // last used index off > u_short last_free; // last free lw in block > chr_q global; // global name > } DB_Block; // end block header > > This structure works OK on the x86 but on the Raspberry Pi, the global element is extracted from the data commencing at global+4 for 8 bytes. > > Is there some way to force gcc to have global at +12 and not +16 in the structure? > > I tried compiling with the switch -fpack-struct; but this broke the whole thing. You can apply __attribute__((packed)) on just the structure instead. See <http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Variable-Attributes.html#index-g_t_0040code_007bpacked_007d-attribute-2667>. -- VZ