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]

optimization/3724: Illegal instruction when profiling optimized code on arm-linux



>Number:         3724
>Category:       optimization
>Synopsis:       Illegal instruction when profiling optimized code on arm-linux
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 17 18:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     philr
>Release:        3.0
>Organization:
>Environment:
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: arm-unknown-linux-gnu

glibc-2.2.3 (happens under glibc-2.1.3 as well) on an Intel Assabet dev board.
>Description:
I can run code compiled with -O or -pg, but if I use both, an illegal instruction halts the program after the first profiled function returns.
>How-To-Repeat:
On host:

$ arm-linux-gcc -v -save-temps -O -pg test.c
Reading specs from /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/specs
Configured with: ../gcc-3.0/configure --target=arm-linux --host=i686-pc-linux --prefix=/usr/arm_tools --enable-languages=c,c++
Thread model: posix
gcc version 3.0
 /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/cpp0 -lang-c -v -iprefix /usr/local/bin/../lib/gcc-lib/arm-linux/3.0/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=0 -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__ELF__ -D__unix -D__linux -Asystem=unix -Asystem=posix -Acpu=arm -Amachine=arm -D__CHAR_UNSIGNED__ -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D__ARM_ARCH_3__ -D__APCS_32__ -D__ARMEL__ -D__arm__ test.c test.i
GNU CPP version 3.0 (cpplib) (ARM GNU/Linux with ELF)
ignoring nonexistent directory "/usr/local/lib/gcc-lib/arm-linux/3.0/include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/sys-include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/include
 /usr/arm_tools/lib/../arm-linux/sys-include
 /usr/arm_tools/lib/../arm-linux/include
End of search list.
 /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/cc1 -fpreprocessed test.i -quiet -dumpbase test.c -O -version -p -o test.s
GNU CPP version 3.0 (cpplib) (ARM GNU/Linux with ELF)
GNU C version 3.0 (arm-linux)
        compiled by GNU C version 3.0.
 /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/bin/as -o test.o test.s
 /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/collect2 -dynamic-linker /lib/ld-linux.so.2 -X -m armelf_linux -p /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/lib/gcrt1.o /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/lib/crti.o /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/crtbegin.o -L/usr/local/bin/../lib/gcc-lib -L/usr/arm_tools/lib/gcc-lib/arm-linux/3.0 -L/usr/arm_tools/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/lib test.o -lgcc -lc -lgcc /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/crtend.o /usr/arm_tools/lib/gcc-lib/arm-linux/3.0/../../../../arm-linux/lib/crtn.o

$ cat test.i
# 1 "test.c"
void func() {} int main() { func(); }

On target:
$ ./a.out
a.out (268): undefined instruction: pc=4011fd0c
Code: 30292a20 7c7c2029 (616d2a20) 6e656c78 203d2120
Illegal instruction
$

>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


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