This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GCC and UltraSparc 2



Sorry if I am insistent, but I've tried with "-fpack-struct".
This cause the structs to be packed, as expected, but when I access to a
disaligned field of a struct with a pointer, a BUS ERROR is raised:

typedef struct
{
   unsigned char     byteField1;
   unsigned char     byteField2;
   unsigned long     udwordField1;
   unsigned char     byteField3;
} PackedStruct;

PackedStruct     packedStr;
PackedStruct    *packedPtr;

unsigned char   *packedByte1Ptr;
unsigned char   *packedByte2Ptr;
unsigned long   *packedUdword1Ptr;
unsigned char   *packedByte3Ptr;

packedStr.byteField1    = 15;
packedStr.byteField2    = 25;
packedStr.udwordField1  = 105;
packedStr.byteField3    = 35;

packedPtr   = &packedStr;

packedByte1Ptr    = &(packedPtr->byteField1);
packedByte2Ptr    = &(packedPtr->byteField2);
packedUdword1Ptr  = &(packedPtr->udwordField1);
packedByte3Ptr    = &(packedPtr->byteField3);

/*
******************************************
*            FIELDS POINTERS             *
******************************************
 packedPtr = 0xeffffbd0

 packedByte1Ptr     = 0xeffffbd0
 packedByte2Ptr     = 0xeffffbd1
 packedUdword1Ptr   = 0xeffffbd2
 packedByte3Ptr     = 0xeffffbd6
*/

printf ("\n packedStr.udwordField1 = %d", *packedUdword1Ptr);

/*
* BUS ERROR
*/

Can you help me?

Thank you in advance.

Claudio.






Richard Henderson <rth@redhat.com> on 17/05/2002 03.54.41

To:   Claudio Marino <Claudio.Marino@marconi.com>
cc:   gcc-bugs@gcc.gnu.org

Subject:  Re: GCC and UltraSparc 2


On Mon, May 13, 2002 at 03:56:33PM +0200, Claudio Marino wrote:
> In other words, does an option like "-misalign" or "-xmemalign=1i" exist
> for GCC?

-fpack-struct


r~





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]