Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com To: "Billinghurst, David (CRTS)" Cc: , Subject: Re: Object alignment, was: cygwin failures - assertion "!(addr & FLAGS)" failed: References: From: Tom Tromey Reply-To: tromey AT redhat DOT com X-Attribution: Tom X-Zippy: What I want to find out is -- do parrots know much about Astro-Turf? Date: 05 May 2002 18:23:43 -0600 In-Reply-To: "Billinghurst, David's message of "Mon, 6 May 2002 09:49:31 +1000" Message-ID: <87n0vedsz4.fsf@creche.redhat.com> Lines: 27 >>>>> "David" == Billinghurst, David (CRTS) writes: David> So we need objects to be 8-byte aligned so that the low three David> bits of the address are 0? Are there any ways around this, as David> I don't think that this is the default on cygwin. For libgcj this decision is made either by the GC (for dynamically allocated objects) or the compiler (for statically allocated objects). The GC should already be doing this. The compiler might not, but that is something that, in theory, we can fix entirely in gcj by setting the required alignment correctly. Unless... David> - it is necessary to rebuild ld to ensure 8-byte alignment ... there is some problem getting ld to do this even when gcj sets the alignment correctly on the type. It looks like the alignment is in fact set correctly in gcj: /* Hash synchronization requires at least 64-bit alignment. */ if (flag_hash_synchronization && POINTER_SIZE < 64) DECL_ALIGN (decl) = 64; Tom -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/