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]

ARM compiler misbehaves ?


Hello
We are encontering something that we think is a compiler bug. Running on a normal PC it works. We have taken everything out of normal code and made the following sample code.


typedef struct
{
	unsigned char test_char;
	unsigned short test_short;
}  __attribute__ ((__packed__)) test_struct;

int main(void)
{
	test_struct test_var = {0x12, 0x3456};
	unsigned short* test_pointer;
		
	printf("test_var.test_char %x\n", test_var.test_char);
	printf("test_var.test_short %x\n", test_var.test_short);
	
	test_pointer = &test_var.test_short;
	*test_pointer = 0x789A;

        printf("test_var.test_char %x\n", test_var.test_char);
        printf("test_var.test_short %x\n", test_var.test_short);

	return 0;
}


ON A LINUX PC $ gcc --version gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gcc test.c $ ./a.out test_var.test_char 12 test_var.test_short 3456 test_var.test_char 12 test_var.test_short 789a


$ armv5b-linux-gcc --version armv5b-linux-gcc (GCC) 3.3.3 Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


$ armv5b-linux-gcc --static test.c <Transfer to target> # ./a.out test_var.test_char 12 test_var.test_short 3456 test_var.test_char 78 -----------------> Short started 1 byte to early test_var.test_short 9a56 #

We think that the compiler takes the odd address and maskes out the east
significant bit.

Svein-Erik Skjelbred



------
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]