In our sources we use a macro UNALIGNED to mask
compiler specific attributes in declarations, e.g. with
g++:
#define UNALIGNED __attribute__((__packed__))
If we use this in structures like the following the
code is broken by GC:
struct Bit_mask {
unsigned short flag1:1 UNALIGNED;
unsigned short flags2:2 UNALIGNED;
unsigned short flags3:3 UNALIGNED;
};
will be modified to
struct Bit_mask {
unsigned short flag1 : 1U NALIGNED;
unsigned short flags2 : 2U NALIGNED;
unsigned short flags3 : 3U NALIGNED;
};
The lexical analysis in lexi.c seems way to optimistic
in which blanks could be skipped.
The quick fix we used to solve this is attached. We
are using version 1.140.
patch for lexi.c