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/
