summary refs log tree commit diff stats
path: root/results/classifier/105/other/597362
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/105/other/597362')
-rw-r--r--results/classifier/105/other/59736291
1 files changed, 91 insertions, 0 deletions
diff --git a/results/classifier/105/other/597362 b/results/classifier/105/other/597362
new file mode 100644
index 00000000..5b639c8d
--- /dev/null
+++ b/results/classifier/105/other/597362
@@ -0,0 +1,91 @@
+other: 0.779
+graphic: 0.775
+instruction: 0.707
+mistranslation: 0.706
+semantic: 0.682
+network: 0.676
+KVM: 0.649
+assembly: 0.640
+vnc: 0.626
+boot: 0.609
+device: 0.609
+socket: 0.591
+
+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".
+
+