------- Comment #1 from dougkwan at google dot com 2009-02-12 03:04 ------- I have a test case now. The toolchain is built with gcc trunk, binutils-2.18, gdb-6.71 and newlib-1.16.0 for target arm-eabi
--- #include <stdlib.h> extern int sprintf (char *, const char*, ...); int main (void) { char buf[10]; sprintf(buf, "aaaa"); return 0; } ---- # # Test case exits with an error code if compiled with "-fstack-protector -fpic" # sh-3.1$ arm-eabi-gcc -fstack-protector -fpic bug.csh-3.1$ arm-eabi-gdb a.out GNU gdb 6.7.1 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-unknown-linux-gnu --target=arm-eabi"... (gdb) target sim Connected to the simulator. (gdb) load a.out Loading section .init, size 0x18 vma 0x8000 Loading section .text, size 0x2af8 vma 0x8018 Loading section .fini, size 0x18 vma 0xab10 Loading section .rodata, size 0xd4 vma 0xab28 Loading section .ARM.exidx, size 0x8 vma 0xabfc Loading section .eh_frame, size 0x4 vma 0xac04 Loading section .init_array, size 0x8 vma 0x12c08 Loading section .fini_array, size 0x4 vma 0x12c10 Loading section .jcr, size 0x4 vma 0x12c14 Loading section .got, size 0x10 vma 0x12c18 Loading section .data, size 0x930 vma 0x12c28 Start address 0x80ac Transfer rate: 109248 bits in <1 sec. (gdb) run Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out Program exited with code 0377. (gdb) quit # # It exits normally with "-fstack-protector" only # sh-3.1$ arm-eabi-gcc -fstack-protector bug.c sh-3.1$ arm-eabi-gdb a.out GNU gdb 6.7.1 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-unknown-linux-gnu --target=arm-eabi"... (gdb) target sim Connected to the simulator. (gdb) load a.out Loading section .init, size 0x18 vma 0x8000 Loading section .text, size 0x2adc vma 0x8018 Loading section .fini, size 0x18 vma 0xaaf4 Loading section .rodata, size 0xd4 vma 0xab0c Loading section .ARM.exidx, size 0x8 vma 0xabe0 Loading section .eh_frame, size 0x4 vma 0xabe8 Loading section .init_array, size 0x8 vma 0x12bec Loading section .fini_array, size 0x4 vma 0x12bf4 Loading section .jcr, size 0x4 vma 0x12bf8 Loading section .data, size 0x930 vma 0x12c00 Start address 0x80ac Transfer rate: 108896 bits in <1 sec. (gdb) run Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out Program exited normally. (gdb) quit # # It also exits normally if "-O2" is given in addition to "-fstack-protector -fpic" # sh-3.1$ arm-eabi-gcc -fstack-protector -fpic -O2 bug.c sh-3.1$ arm-eabi-gdb a.out GNU gdb 6.7.1 Copyright (C) 2007 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=i686-unknown-linux-gnu --target=arm-eabi"... (gdb) target sim Connected to the simulator. (gdb) load a.out Loading section .init, size 0x18 vma 0x8000 Loading section .text, size 0x2ae0 vma 0x8018 Loading section .fini, size 0x18 vma 0xaaf8 Loading section .rodata, size 0xd4 vma 0xab10 Loading section .ARM.exidx, size 0x8 vma 0xabe4 Loading section .eh_frame, size 0x4 vma 0xabec Loading section .init_array, size 0x8 vma 0x12bf0 Loading section .fini_array, size 0x4 vma 0x12bf8 Loading section .jcr, size 0x4 vma 0x12bfc Loading section .got, size 0x10 vma 0x12c00 Loading section .data, size 0x930 vma 0x12c10 Start address 0x80ac Transfer rate: 109056 bits in <1 sec. (gdb) run Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out Program exited normally. (gdb) quit -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36480