summary refs log tree commit diff stats
path: root/results/classifier/zero-shot-user-mode/instruction/1041
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-07-08 13:28:15 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-07-08 13:28:28 +0200
commit5aa276efcbd67f4300ca1a7f809c6e00aadb03da (patch)
tree9b8f0e074014cda8d42f5a97a95bc25082d8b764 /results/classifier/zero-shot-user-mode/instruction/1041
parent1a3c4faf4e0a25ed0b86e8739d5319a634cb9112 (diff)
downloademulator-bug-study-5aa276efcbd67f4300ca1a7f809c6e00aadb03da.tar.gz
emulator-bug-study-5aa276efcbd67f4300ca1a7f809c6e00aadb03da.zip
restructure results
Diffstat (limited to 'results/classifier/zero-shot-user-mode/instruction/1041')
-rw-r--r--results/classifier/zero-shot-user-mode/instruction/104137
1 files changed, 37 insertions, 0 deletions
diff --git a/results/classifier/zero-shot-user-mode/instruction/1041 b/results/classifier/zero-shot-user-mode/instruction/1041
new file mode 100644
index 00000000..80581b7c
--- /dev/null
+++ b/results/classifier/zero-shot-user-mode/instruction/1041
@@ -0,0 +1,37 @@
+instruction: 0.609
+runtime: 0.268
+syscall: 0.123
+
+
+
+x86_64 Auxillary vector reports platform as i686 which doesn't match the linux kernel
+Description of problem:
+Based on the kernel source in the auxiliary vector AT_PLATFORM should be `x86_64` (confirmed by running outside qemu). However qemu sets it to `i686`.
+
+This was originally reported with docker-for-mac, but was reduced on `x86_64` which is why it is pointless
+Steps to reproduce:
+1. Compile the following for x86_64 (statically if you don't want have an x86_64 dynamic linker) (code originally from https://stackoverflow.com/questions/26520163/accessing-auxiliary-vectors-c)
+
+```
+#include <stdio.h>
+#include <elf.h>
+
+int main(int argc, char** argv, char* envp[]) {
+  Elf64_auxv_t *auxv;
+  while(*envp++ != NULL);
+
+  /*from stack diagram above: *envp = NULL marks end of envp*/
+  int i = 0 ;
+  for (auxv = (Elf64_auxv_t *)envp; auxv->a_type != AT_NULL; auxv++)
+    /* auxv->a_type = AT_NULL marks the end of auxv */
+  {
+    if( auxv->a_type == AT_PLATFORM)
+      printf("AT_PLATFORM is: %s\n", ((char*)auxv->a_un.a_val));
+  }
+}
+```
+2. Run with `qemu-x86_64-static`
+3. See `AT_PLATFORM is: i686`
+4. Compare to "real" x86_64 bit system which gives `AT_PLATFORM is: x86_64`
+Additional information:
+I think that adding `#define ELF_PLATFORM "x86_64"` [here](https://gitlab.com/qemu-project/qemu/-/blob/master/linux-user/elfload.c#L134) should work (but I don't fully understand the code). Otherwise we just end up getting the 32-bit case.