Hi, I'm having problems with packed structures. Given below is a sample code("test.c") which uses a packed structure:
#include <stdio.h> typedef struct { char a; int b; }__attribute__((packed)) unaligned_struct; unaligned_struct hg; char dummyVar; void main(void){ unaligned_struct* ptr=&hg; hg.a = 0x56; hg.b = 0x1234; } The equivalent assembly code generated was as follows: - 0x1140 <main>: mov #2558, SP ;#0x09fe - 0x1144 <main+4>: mov r1, r4 ; 13 unaligned_struct* ptr=&hg; - 0x1146 <main+6>: mov #514, 0(r4) ;#0x0202 14 15 hg.a = 0x56; 0x114c <main+12>: mov.b #86, &0x0202 ;#0x0056 16 hg.b = 0x1234; - 0x1152 <main+18>: mov #4660, &0x0000 ;#0x1234 - 0x1158 <main+24>: incd SP ; - 0x115a <main+26>: br #0x115e ; The msp430-gcc compiler gives an error/warning at line no. 16, (i.e. at hg.b = 0x1234;): test.c:16: internal error: unsupported relocation error However, when I tried the same with the IAR compiler, it works fine. I guess MSPGCC doesn't guarantee support for packed structures due to the problems MSP430 has with unaligned word accesses - so how does IAR do it? I apologize for the long post, but I desperately need to use packed structures in my code. Thank you.. Regards, Sudhakar