Hi All, Getting a bus/hard error for the below case ,make sense since ldm/stm expects the address to be word aligned .
bash-4.1$ cat test.c struct test { char c; int i; } __attribute__((packed)); struct test a,b; int main() { a =b ; //here compiler is not sure that a or b is word aligned return a.i; } bash-4.1$ arm-eabi-gcc -v Using built-in specs. COLLECT_GCC=arm-eabi-gcc COLLECT_LTO_WRAPPER=/nobackup/ukalappa/build/gcc/mv-ga/c4.7.0-p1/x86_64-linux/libexec/gcc/arm-eabi/4.7.0/lto-wrapper Target: arm-eabi Configured with: /nobackup/ukalappa/src/gcc/mv-ga/gcc/configure --srcdir=/nobackup/ukalappa/src/gcc/mv-ga/gcc --build=x86_64-linux --target=arm-eabi --host=x86_64-linux --prefix=/nobackup/ukalappa/build/gcc/mv-ga/c4.7.0-p1 --exec-prefix=/nobackup/ukalappa/build/gcc/mv-ga/c4.7.0-p1/x86_64-linux --with-pkgversion='Cisco GCC c4.7.0-p1' --with-cisco-patch-level=1 --with-cisco-patch-level-minor=0 --with-bugurl=http://wwwin.cisco.com/it/services/ --disable-maintainer-mode --enable-languages=c,c++ --disable-nls Thread model: single gcc version 4.7.0 bash-4.1$ ./arm-eabi-gcc -march=armv7 -mthumb -S test.c bash-4.1$ cat test.s .syntax unified .arch armv7 .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 1 .eabi_attribute 30, 6 .eabi_attribute 34, 1 .eabi_attribute 18, 4 .thumb .file "test.c" .comm a,5,4 .comm b,5,4 .text .align 2 .global main .thumb .thumb_func .type main, %function main: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 @ link register save eliminated. push {r7} add r7, sp, #0 movw r3, #:lower16:a movt r3, #:upper16:a movw r2, #:lower16:b movt r2, #:upper16:b ldmia r2, {r0, r1} //Bus error str r0, [r3] adds r3, r3, #4 strb r1, [r3] movw r3, #:lower16:a movt r3, #:upper16:a ldr r3, [r3, #1] @ unaligned mov r0, r3 mov sp, r7 pop {r7} bx lr .size main, .-main Arm states that ldm/stm should be word aligned and generating ldm/stm in the above case is the compiler error/bug ,do you guys agree with me or i'm missing something here ? Thank you ~Umesh