summary refs log tree commit diff stats
path: root/results/classifier/118/x86/796480
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/118/x86/796480')
-rw-r--r--results/classifier/118/x86/79648080
1 files changed, 80 insertions, 0 deletions
diff --git a/results/classifier/118/x86/796480 b/results/classifier/118/x86/796480
new file mode 100644
index 00000000..ea8a5178
--- /dev/null
+++ b/results/classifier/118/x86/796480
@@ -0,0 +1,80 @@
+x86: 0.835
+architecture: 0.777
+performance: 0.722
+graphic: 0.704
+kernel: 0.680
+device: 0.655
+user-level: 0.638
+assembly: 0.454
+permissions: 0.448
+ppc: 0.399
+mistranslation: 0.398
+semantic: 0.373
+PID: 0.346
+vnc: 0.337
+debug: 0.269
+arm: 0.263
+register: 0.223
+hypervisor: 0.214
+socket: 0.200
+VMM: 0.181
+files: 0.170
+virtual: 0.158
+risc-v: 0.147
+peripherals: 0.144
+TCG: 0.132
+boot: 0.116
+i386: 0.113
+network: 0.110
+KVM: 0.093
+
+Addresses with 4GB differences are consider as one single address in QEMU
+
+THIS IS THE ISSUE OF USER MODE EMULATION
+Information about guest and host
+**********************************
+guest: 64 bit x86 user mode binary
+host: 32 bit Linux OS
+uname -a :Linux KICS-HPCNL-32blue 2.6.33.3-85.fc13.i686.PAE #1 SMP
+architecture: intel64
+Bug Description
+****************
+for memory reference instructions, suppose I have two addresses in guest address space(64 bit)
+0x220000000
+0x320000000
+as lower 32 bit part of both addresses are same, when particular instructions are translated into host code(32 bit)
+in both above cases the value is loaded from same memory and we get same value. where actual behaviour was to get two different values.
+here is the program which i used to test:
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#define SIZE 4294967298 /* 4Gib*/
+
+int main() {
+   char *array;
+   unsigned int i;
+
+   array = malloc(sizeof(char) * SIZE);
+   if(array == NULL)    {
+      fprintf(stderr, "Could not allocate that much memory");
+      return 1;    }
+    array[0] = 'a';
+   array[SIZE-2] = 'z';
+   printf("array[SIZE-2] = %c array[0] = %c\n",array[SIZE-2], array[0]);
+  return 0;
+}
+I have 8 gib RAM
+I compiled this program on 64 bit linux  and run this on 32 bit linux with qemu
+QEMU command line and output
+**********************************
+$x86_64-linux-user/qemu-x86_64 ~/ar_x86 
+output: array[SIZE-1] = z,array[0] = z 
+Release information
+********************
+x86_64 binary is tested with latest release : qemu-0.14.1
+and with current development tree as well( live code of QEMU using git)
+
+Can you still reproduce this problem with the latest version of QEMU (currently version 2.9.0)?
+
+[Expired for QEMU because there has been no activity for 60 days.]
+