arm-coff-gcc: -fpack-struct and non-word-aligned ints?
Mon Jul 5 17:41:00 GMT 2004
On Mon, Jul 05, 2004 at 03:13:18PM +0200, Toralf Lund wrote:
> >Yes. You can't take the address of a packed structure member and then
> >dereference it as a normal pointer. If the underlying hardware/ABI only
> >supports aligned types then only pointers that are correctly aligned can
> >be dereferenced.
> Fair enough.
> I guess that it's logical that it would work on the 68K, then, as 32-bit
> accesses only need to be aligned to 16-bit words there, as far as I
I believe that's right. I ran into the same exact same problem
when porting an app from 68K to SPARC some years back.
> OK. I also found out why I thought it sometimes worked; in fact I didn't
> take the address of a basic type in those cases, but of the struct
> itself instead. In other words, in my above example
> struct somestruct *ptr=&value;
> would probably do the right thing. I'm I right in assuming that this
> will always be allowed?
Good question. I _think_ it will because the compiler knows
that "b" is a packed field when you do foo.b or bar->b, so it
will generate code appropriately.
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to firstname.lastname@example.org
More information about the crossgcc