record mode does not support all instructions
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Linaro GDB |
Fix Released
|
Undecided
|
Muhammad Omair Javaid | ||
gdb |
New
|
Undecided
|
Muhammad Omair Javaid |
Bug Description
Currently (as of trunk sources on 2013-03-18), GDB does not support all ARM instructions.
I attach two small examples of this (test1.c and test2.c), as well as the corresponding binaries I compiled with gcc (Ubuntu/Linaro 4.6.3-1ubuntu5), which defaults to Thumb mode code generation. I generated the test?.arm by adding -marm to the GCC command line.
$ gcc -g -o test1.thumb test1.c
$ gcc -g -o test2.thumb test2.c
$ gcc test1.c -g -o test1.arm -marm
$ gcc test2.c -g -o test2.arm -marm
# With test1.thumb:
===========-
$ gdb test1.thumb
GNU gdb (GDB) 7.6.50.20130317-cvs
[....]
(gdb) b main
Breakpoint 1 at 0x8396: file test1.c, line 5.
(gdb) r
Starting program: /home/lyon/
Breakpoint 1, main () at test1.c:5
5 int i=0;
(gdb) b test1.c:8
Breakpoint 2 at 0x83b0: file test1.c, line 8.
(gdb) target record-full
(gdb) c
Continuing.
Process record doesnt support thumb32 instruction 0x300f04f at address 0x8396.
main () at test1.c:5
5 int i=0;
Process record: failed to record execution log.
# With test1.arm:
===========
(gdb) b main
Breakpoint 1 at 0x839c: file test1.c, line 5.
(gdb) r
Starting program: /home/lyon/
Breakpoint 1, main () at test1.c:5
5 int i=0;
(gdb) b test1.c:8
Breakpoint 2 at 0x83bc: file test1.c, line 8.
(gdb) target record-full
(gdb) c
Continuing.
Process record doesnt support thumb32 instruction 0x43f0e92d at address 0xb6fea64c.
Process record: failed to record execution log.
[process 13358] #1 stopped.
0xb6fea64c in ?? () from /lib/ld-
# With test2.thumb:
============
(gdb) b main
Breakpoint 1 at 0x8366: file test2.c, line 5.
(gdb) r
Starting program: /home/lyon/
Breakpoint 1, main () at test2.c:5
5 float i = 15.4;
(gdb) b test2.c:7
Breakpoint 2 at 0x8382: file test2.c, line 7.
(gdb) target record-full
(gdb) c
Continuing.
Process record doesnt support thumb32 instruction 0x7a01edd7 at address 0x836a.
Process record: failed to record execution log.
[process 13495] #1 stopped.
main () at test2.c:6
6 i = i * 3.24;
# With test2.arm:
===========
(gdb) b main
Breakpoint 1 at 0x836c: file test2.c, line 5.
(gdb) r
Starting program: /home/lyon/
Breakpoint 1, main () at test2.c:5
5 float i = 15.4;
(gdb) b test2.c:7
Breakpoint 2 at 0x838c: file test2.c, line 7.
(gdb) target record-full
(gdb) c
Continuing.
Process record does not support instruction 0xed5b7a02 at address 0x8374.
Process record: failed to record execution log.
[process 13578] #1 stopped.
main () at test2.c:6
6 i = i * 3.24;
Changed in gdb-linaro: | |
assignee: | nobody → Muhammad Omair Javaid (omair-javaid) |
Changed in gdb: | |
assignee: | nobody → Muhammad Omair Javaid (omair-javaid) |
Changed in gdb-linaro: | |
status: | New → In Progress |
Changed in gdb-linaro: | |
status: | In Progress → Fix Released |