From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Martin v. Loewis" To: greened@eecs.umich.edu Cc: egcs@egcs.cygnus.com Subject: Re: egcs and bitfields Date: Wed, 31 Mar 1999 23:46:00 -0000 Message-ID: <199903112300.AAA19947@mira.isdn.cs.tu-berlin.de> References: <36E844B2.8DAEFAAF@eecs.umich.edu> X-SW-Source: 1999-03n/msg00435.html Message-ID: <19990331234600.E1vbmECU0At5DgmufVNx0iMPUzToyIPYuEC3RsDSRcM@z> > I sent this question to the list a few days ago but got > no response. Can someone please help me out? I think the problem with your previous report was that it was hard to understand. I tried to come up with a program that demonstrates your problem, and I got struct baz { unsigned int a:2, b:4, c:32;} y; void foo() { y.c = 0x56789; } int main() { unsigned int *b; bzero(&y,sizeof(y)); foo(); b=&y; printf("%x %x\n",b[0],b[1]); } Is this the case you are talking about? Now, you claim that the SysV ABI requires y.c to be at offset 4, right? (this is a claim I can't verify since I don't have that specification) Anyway, when I run the program on i586-pc-linux-gnu, with egcs-2.93.11, I get as output 0 56789 >From your explanation, I understand that this result is ABI-compliant. So where is the problem? Regards, Martin