WTF does IDA want here from OpenOCD? I don't known. Hypothesis: i'm create manual memory region in IDA debugger, covers the SRAM area. W/o this action stack contains only question marks. May be IDA want to refresh stacks entry(-es) ? And some one hypothesis: can IDA try to switch endianless format on gdbserver with gdb protocol ? May be with optional command or something. (I dont know this protocol specification). And this command is simply not handled with OpenOCD gdbserver.
One more reproduce and i captured all PC-changing command gdb packets. Gdb console: Debug: 851 1921840 gdb_server.c:2812 gdb_input_inner(): received packet: 'Pf=e20d0008' Debug: 852 1921845 gdb_server.c:1298 gdb_set_register_packet(): - Debug: 853 1921850 gdb_server.c:2812 gdb_input_inner(): received packet: 'P19=20000021' Debug: 854 1921855 gdb_server.c:1298 gdb_set_register_packet(): - Error: 855 1921858 gdb_server.c:1320 gdb_set_register_packet(): gdb sent a packet with wrong register size Debug:...
This command sets register "f" (that is, PC) to value 6c0d0008. This looks odd to me, as stm32 use 0x08000000 region for flash and 0x20000000 for RAM. So what is 6c0d0008 supposed to mean? If we reverse address bytes - they will be a correct value: 0x08000d6c. IDA version is 7.0.170914
One more reproduce and i captured all gdb packets. Gdb console: Debug: 851 1921840 gdb_server.c:2812 gdb_input_inner(): received packet: 'Pf=e20d0008' Debug: 852 1921845 gdb_server.c:1298 gdb_set_register_packet(): - Debug: 853 1921850 gdb_server.c:2812 gdb_input_inner(): received packet: 'P19=20000021' Debug: 854 1921855 gdb_server.c:1298 gdb_set_register_packet(): - Error: 855 1921858 gdb_server.c:1320 gdb_set_register_packet(): gdb sent a packet with wrong register size Debug: 856 1921865 gdb_server.c:1022...
This command sets register "f" (that is, PC) to value 6c0d0008. This looks odd to me, as stm32 use 0x08000000 region for flash and 0x20000000 for RAM. So what is 6c0d0008 supposed to mean? Bytes is reversed. Address is 0x08000d6c, and it is correct address. IDA version is 7.0.170914
This command sets register "f" (that is, PC) to value 6c0d0008. This looks odd to me, as stm32 use 0x08000000 region for flash and 0x20000000 for RAM. So what is 6c0d0008 supposed to mean? May be it is effects of wrong offset/size ? If bytes 0x6c 0x0d are tail of previous packet or something. And correct address is starting from 0x00 0x08 that is 0x08000XXXX P.S.: IDA version is 7.0.170914
One more reproduce. At startup point i set debug_level 3. Check PC changing and it works. Then i set debug_level 0, to reduce output noise. Then i do some step-in's, And Run program to reach breakpoint. Then Run it again. Then Suspend and set debug_level to 3. And tried to change PC. Full log: Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport...
One more reproduce. At startup point i set debug_level 3. Check PC changing and it works. Then i set debug_level 0, to reduce output noise. Then i do some step-in's, And Run program to reach breakpoint. Then Run it again. Then Suspend and set debug_level to 3. And tried to change PC. Full log: Open On-Chip Debugger 0.10.0 Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport...