diff options
Diffstat (limited to 'results/classifier/118/none/597362')
| -rw-r--r-- | results/classifier/118/none/597362 | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/results/classifier/118/none/597362 b/results/classifier/118/none/597362 new file mode 100644 index 000000000..e36de7a01 --- /dev/null +++ b/results/classifier/118/none/597362 @@ -0,0 +1,108 @@ +hypervisor: 0.791 +ppc: 0.782 +graphic: 0.775 +TCG: 0.774 +peripherals: 0.724 +performance: 0.722 +user-level: 0.714 +risc-v: 0.709 +mistranslation: 0.706 +register: 0.706 +virtual: 0.702 +x86: 0.694 +semantic: 0.682 +permissions: 0.681 +network: 0.676 +debug: 0.672 +arm: 0.657 +PID: 0.656 +KVM: 0.649 +architecture: 0.640 +assembly: 0.640 +vnc: 0.626 +boot: 0.609 +device: 0.609 +socket: 0.591 +files: 0.581 +VMM: 0.545 +kernel: 0.530 +i386: 0.475 + +qemu-system-sparc singlestep not work in gdbstub + +Debugging with gdb-stub does not work with qemu-system-sparc target + +Qemu compiled from current git tree. + +execution string: qemu-system-sparc.exe -s -S -m 256 -L Bios -hda +sparc.img -boot c +connect with telnet localhost 1234 +enter '$s#73' (without quotes, this is single step command to gdb stub) +gdb stub reply '+' (without quotes, as it accept command) +After this qemu continuously execute instructions in single step mode +and does not exit to gdb stub after each executed instruction with +interrupt signal +("T%02xthread:%02x;" /gdb_vm_state_change in gdbstub.c/ ); + +If we look at target-sparc/translate.c, we can see that +gen_helper_debug() is not called in single step mode: + +======================== + if ((pc & TARGET_PAGE_MASK) == (tb->pc & TARGET_PAGE_MASK) && + (npc & TARGET_PAGE_MASK) == (tb->pc & TARGET_PAGE_MASK) && + !s->singlestep) { + /* jump to same page: we can use a direct jump */ + tcg_gen_goto_tb(tb_num); + tcg_gen_movi_tl(cpu_pc, pc); + tcg_gen_movi_tl(cpu_npc, npc); + tcg_gen_exit_tb((long)tb + tb_num); + } else { + /* jump to another page: currently not optimized */ + tcg_gen_movi_tl(cpu_pc, pc); + tcg_gen_movi_tl(cpu_npc, npc); + tcg_gen_exit_tb(0); + } +========================= + +======================== + /* if single step mode, we generate only one instruction and + generate an exception */ + if (dc->singlestep) { + break; + } +======================== + +If we look similar code at target-sh4/translate.c we can see that is +called in this cases: + +======================== + if ((tb->pc & TARGET_PAGE_MASK) == (dest & TARGET_PAGE_MASK) && + !ctx->singlestep_enabled) { + /* Use a direct jump if in same page and singlestep not enabled */ + tcg_gen_goto_tb(n); + tcg_gen_movi_i32(cpu_pc, dest); + tcg_gen_exit_tb((long) tb + n); + } else { + tcg_gen_movi_i32(cpu_pc, dest); + if (ctx->singlestep_enabled) + gen_helper_debug(); + tcg_gen_exit_tb(0); + } +======================== + +======================== + if (tb->cflags & CF_LAST_IO) + gen_io_end(); + if (env->singlestep_enabled) { + tcg_gen_movi_i32(cpu_pc, ctx.pc); + gen_helper_debug(); + } else { +========================== + +Triaging old bug reports ... Can you still reproduce this problem with the latest version of QEMU? + +[Expired for QEMU because there has been no activity for 60 days.] + +I'm sure this has been fixed years ago (and qemu-system-sparc single-step seems fine in local tests) so I'm marking this as "Fix released". + + |