Object alignment, was: cygwin failures - assertion "!(addr & FLAGS)" failed:

Tim Prince tprince@computer.org
Sun May 5 23:44:00 GMT 2002

On Sunday 05 May 2002 21:49, Tom Tromey wrote:
> >>>>> "Tim" == Tim Prince <tprince@computer.org> writes:
> Tim> The binutils alignment parameter in coff-i386.c is set to 4-byte
> Tim> alignment.  4-byte alignment also is the default for gcc -Os, at
> Tim> least from gcc-3.1.  Cases have been produced where gcc-3.1
> Tim> failed to give 16-byte alignment even with -O2, unless
> Tim> -mpreferred-stack-boundary=4 was specified.
> Are you talking about only the alignment of the stack?  I don't think
> that should matter to libgcj.  There used to be one place where we
> stack-allocated an object, but I believe that now there aren't any.
> All that matters to us is the alignment of statically allocated
> object, and objects created by the GC.
> Tom
Stack alignment matters when you use <xmmintrin.h>.  I didn't take the 
question as being one where gcj and libgcj were to be built without regard to 
other consequences, although I'm surprised if gcj doesn't allocate anything 
on stack. Static objects are under the control of the alignment for which 
binutils is built, so you don't get 8-byte alignment of statics with the 
stock cygwin binutils build.
Tim Prince

More information about the Java mailing list