I tried it with the mspgcc 3.2.2 release that is
currently in the download section at sourceforge with
the gcc 3.2.2 sources, but since setting the
STRICT_ALIGNMENT macro to 1 solves the problems, and
all the versions in CVS of the header file that I
looked at (including the latest for gcc 3.4) have it
set to 0, I think you will find the same behaviour
with all versions of the compiler.

This opinion is based on the description of the macro
I quoted earlier.

G. Halkes
--- Dmitry <[email protected]> wrote:
> hm....
> which gcc's version/build?
> ~d
> 
> 
> On Monday 02 February 2004 18:10, G Halkes wrote:
> > Hi,
> >
> > What I ment was, if you use the following code:
> >
> > struct unaligned {
> > char first;
> > int second;
> > } __attribute__((packed));
> >
> > union test {
> > struct unaligned data;
> > char cdata[3];
> > };
> >
> > void function() {
> > union test test;
> > int data, tmp;
> > test.cdata[0] = 0x1;
> > test.cdata[1] = 0x2;
> > test.cdata[2] = 0x3;
> >
> > data = test.data.second;
> >       memcpy(&tmp, &test.data.second, 2);
> > }
> >
> > data will contain the value 0x201, and not the
> value
> > 0x302 as it should. The same goes for tmp (try it.
> I
> > did and got the wrong results). The reason the
> memcpy
> > goes wrong is because it is replaced by a single
> word
> > move instead of two byte moves.
> >
> > When I built gcc with the STRICT_ALIGNMENT macro
> set
> > to 1, I got the value 0x302 which is correct.
> >
> > G. Halkes
> >
> > PS: I used a printf routine to output the results
> to a
> > serial port to see the result. I removed it from
> the
> > code because it isn't standard. Just in case your
> > wondering.
> >
> > >for built-ins gcc takes into account alignement.
> > > So, if gcc knows, that something aligned by 2 it
> >
> > uses >world operations,
> >
> > > otherwise byte ones.
> > >
> > > Packed does not mean the structure misaligned.
> > > It depends on data types of the structure.
> > > For example:
> > >
> > > struct {
> > > char a;
> > > int b;
> > > };
> > >
> > > isn't aligned by world boundary.
> > >
> > > struct { int a,b}
> > > aligned.
> > >
> > > Even more -- if the structure aligned and its
> size
> >
> > is >not even, gcc will use
> >
> > > world operations for thhis structure size()-1
> and
> > >byte operation for a last
> > > byte of it.
> >
> > __________________________________
> > Do you Yahoo!?
> > Yahoo! SiteBuilder - Free web site building tool.
> Try it!
> > http://webhosting.yahoo.com/ps/sb/
> >
> >
> >
>
-------------------------------------------------------
> > The SF.Net email is sponsored by EclipseCon 2004
> > Premiere Conference on Open Tools Development and
> Integration
> > See the breadth of Eclipse activity. February 3-5
> in Anaheim, CA.
> > http://www.eclipsecon.org/osdn
> > _______________________________________________
> > Mspgcc-users mailing list
> > [email protected]
> >
>
https://lists.sourceforge.net/lists/listinfo/mspgcc-users
> 
> -- 
>
/*****************************************************************
>      ("`-''-/").___..--''"`-._     (\   Dimmy the
> Wild     UA1ACZ
>       `6_ 6  )   `-.  (     ).`-.__.`)  State
> Polytechnical Univ.
>       (_Y_.)'  ._   )  `._ `. ``-..-'  
> Radio-Physics Departament
>     _..`--'_..-_/  /--'_.' ,'           Saint
> Petersburg,  Russia
>    (il),-''  (li),'  ((!.-'             +7 (812)
> 5403923, 5585314
> 
>
*****************************************************************/
> 
> 
> 
>
-------------------------------------------------------
> The SF.Net email is sponsored by EclipseCon 2004
> Premiere Conference on Open Tools Development and
> Integration
> See the breadth of Eclipse activity. February 3-5 in
> Anaheim, CA.
> http://www.eclipsecon.org/osdn
> _______________________________________________
> Mspgcc-users mailing list
> [email protected]
>
https://lists.sourceforge.net/lists/listinfo/mspgcc-users


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!
http://webhosting.yahoo.com/ps/sb/

Reply via email to