diff options
Diffstat (limited to 'results/classifier/105/graphic/1623020')
| -rw-r--r-- | results/classifier/105/graphic/1623020 | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/results/classifier/105/graphic/1623020 b/results/classifier/105/graphic/1623020 new file mode 100644 index 000000000..0587e0a3a --- /dev/null +++ b/results/classifier/105/graphic/1623020 @@ -0,0 +1,87 @@ +graphic: 0.882 +semantic: 0.862 +instruction: 0.824 +device: 0.822 +other: 0.816 +socket: 0.810 +vnc: 0.777 +network: 0.777 +mistranslation: 0.771 +KVM: 0.757 +assembly: 0.737 +boot: 0.691 + +emulate amd64 binary on arm7 host + +I'm trying to run a Go program compiled for amd64 on a Raspberry Pi. Here is an example : + +=== +// main.go +package main + +func main() { + println("hello world") +} +=== + +Then here is the output I'm getting : + +=== +> GOARCH=amd64 go build main.go +> ../qemu/build/x86_64-linux-user/qemu-x86_64 -strace ./main +29213 arch_prctl(4098,4823880,0,0,0,0) = 0 +29213 write(2,0,4622922)fatal error: = 13 +29213 write(2,0,4622132)bad timediv = 11 +29213 write(2,0,4620094) + = 1 +29213 write(2,0,4635135)runtime: panic before malloc heap initialized + = 46 +29213 select(0,0,0,0,1082131776,0) = -1 errno=14 (Bad address) +29213 select(0,0,0,0,1082131776,0) = -1 errno=14 (Bad address) +29213 write(2,0,4623731) +runtime stack: + = 16 +29213 write(2,0,4622922)fatal error: = 13 +29213 write(2,0,4634607)gentraceback before goexitPC initialization = 43 +29213 write(2,0,4620094) + = 1 +29213 write(2,0,4635135)runtime: panic before malloc heap initialized + = 46 +29213 write(2,0,4624923)panic during panic + = 19 +29213 write(2,0,4623731) +runtime stack: + = 16 +29213 write(2,0,4622922)fatal error: = 13 +29213 write(2,0,4634607)gentraceback before goexitPC initialization = 43 +29213 write(2,0,4620094) + = 1 +29213 write(2,0,4635135)runtime: panic before malloc heap initialized + = 46 +29213 write(2,0,4627441)stack trace unavailable + = 24 +29213 exit_group(4) +=== + +I'm running the latest qemu (commit 7263da78045dc91cc207f350911efe4259e99b3c), which was compiled with "../configure --target-list=x86_64-linux-user --static". + +The go version is 1.7.1, and the system "Linux raspberrypi 4.4.11-v7+ #888 SMP Mon May 23 20:10:33 BST 2016 armv7l GNU/Linux". + +Unfortunately trying to emulate a 64-bit binary on a 32-bit host with QEMU's linux-user emulator will in general not work. (This is because we don't really emulate the guest CPU's MMU in linux-user mode, so we effectively require the guest page size and the host page size to be the same, which they aren't in this case.) + + +I see, I'll close the ticket then. + +Do you have any recommandation on how I could achieve this? It is actually a 64-bit CPU (armv8 from Raspberry Pi 3) but it's running on a 32-bit OS / kernel. + +On 13 September 2016 at 15:56, Bilal Amarni <email address hidden> wrote: +> I see, I'll close the ticket then. +> +> Do you have any recommandation on how I could achieve this? It is +> actually a 64-bit CPU (armv8 from Raspberry Pi 3) but it's running on a +> 32-bit OS / kernel. + +Your choices are to run a 64-bit kernel (which can still support +a mostly 32-bit userspace), or run a 32-bit guest binary, I'm afraid. + + |