This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Mon, 2004-07-05 at 13:45, Toralf Lund wrote: > I'm building some code with -fpack-struct on ARM cross-gcc because an > old API expects it. This mostly works fine, but it turns out that I > sometimes get word-alignment issues that I never saw on the platform I'm > porting from (M68k, a completely different compiler.) I sometimes get > int-type struct-members at addresses that are not word-aligned, although > they are always *halfword*-aligned. In some, but not all (I'm not sure > about the exact conditions) cases where this happens, I get into trouble > if I assign a value to the variable via it's address. Simply put, it > looks like the address is rounded down to the nearest word-boundary, so > that if I do something like > > struct somestruct { > short a; > int b; > }; > [ ... ] > > struct somestruct value; > > [ ... ] > int *bPtr=&value.b; > > *bPtr=-100; > > the assignment will (at least under certain conditions) not actually > write to all 4 bytes of value.b's memory area, but rather value.a and > the two first bytes of value.b. > > Is this expected to happen? 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. > Is there another option or something that > might make the problem go away? No. GCC doesn't support pointer to unaligned fundamental type. R. ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |