On Mon, 31 Jul 2023 at 18:24, Helge Deller <del...@gmx.de> wrote: > > I re-read the thread again. As it seems Joel already tried the latest > > version from me? Sadly I can't test myself on ppc64le (static binary > > needs klibc-PupSAGgtpafMlSLXOLgje1kXFo8.so in /usr/lib which I can't > > install on a debian porterbox). > > > > I still believe we need to track host and target brk page, but I'll give > > your patch a try. > > As suggested, I've based my patches on top of yours and the tree can be > pulled from: > git pull https://github.com/hdeller/qemu-hppa/ brk-fixes-akihiko-2 > > My patches are neccessary to fix an arm-static testcase: > /usr/bin/qemu-arm-static ./fstype > > Let's try this patch series...
The armhf static binary works with expected output. The arm static binary causes qemu to segfault: $ gdb -quiet --args ./build/qemu-arm -d guest_errors,page,strace ~/hello Reading symbols from ./build/qemu-arm... (gdb) r Starting program: build/qemu-arm -d guest_errors,page,strace /home/joel/hello Using host libthread_db library "/lib/powerpc64le-linux-gnu/libthread_db.so.1". [New Thread 0x7ffff762ece0 (LWP 118359)] host mmap_min_addr=0x10000 pgb_find_hole: base @ 140420000 for 4294967296 bytes pgb_static: base @ 140420000 for 4294967295 bytes pgb_reserved_va: base @ 0x140420000 for 4294967296 bytes Locating guest address space @ 0x140420000 page layout changed following mmap start end size prot 00010000-00090000 00080000 --- 00090000-0009b000 0000b000 --- ffff0000-00000000 00010000 r-x page layout changed following mmap start end size prot 00010000-00090000 00080000 r-x 00090000-0009b000 0000b000 --- ffff0000-00000000 00010000 r-x page layout changed following mmap start end size prot 00010000-00090000 00080000 r-x 00090000-000a0000 00010000 rw- ffff0000-00000000 00010000 r-x page layout changed following mmap start end size prot 00010000-00090000 00080000 r-x 00090000-000a0000 00010000 rw- e0000000-e0810000 00810000 rw- ffff0000-00000000 00010000 r-x page layout changed following mmap start end size prot 00010000-00090000 00080000 r-x 00090000-000a0000 00010000 rw- e0000000-e0010000 00010000 --- e0010000-e0811000 00801000 rw- ffff0000-00000000 00010000 r-x guest_base 0x140420000 page layout changed following binary load start end size prot 00010000-00090000 00080000 r-x 00090000-000a0000 00010000 rw- e0000000-e0010000 00010000 --- e0010000-e0810000 00800000 rw- e0810000-e0811000 00001000 r-x ffff0000-00000000 00010000 r-x start_brk 0x00000000 end_code 0x00084f7c start_code 0x00010000 start_data 0x00095098 end_data 0x00098394 start_stack 0xe080f410 brk 0x0009b000 entry 0x00010418 argv_start 0xe080f414 env_start 0xe080f41c auxv_start 0xe080f4a0 118357 brk(NULL) = 0x0009b000 118357 brk(0x0009b8fc) = 0x0009b000 Thread 1 "qemu-arm" received signal SIGSEGV, Segmentation fault. 0x00007fffeed9bb74 in code_gen_buffer () (gdb) (gdb) bt #0 0x00007fffeed9bb74 in code_gen_buffer () #1 0x0000000100169e3c in cpu_tb_exec (cpu=cpu@entry=0x1003d4aa0, itb=itb@entry=0x7fffeed9ba60 <code_gen_buffer+47512>, tb_exit=tb_exit@entry=0x7fffffffe50c) at ../accel/tcg/cpu-exec.c:457 #2 0x000000010016a564 in cpu_loop_exec_tb (tb_exit=0x7fffffffe50c, last_tb=<synthetic pointer>, pc=<optimised out>, tb=0x7fffeed9ba60 <code_gen_buffer+47512>, cpu=<optimised out>) at ../accel/tcg/cpu-exec.c:919 #3 cpu_exec_loop (cpu=cpu@entry=0x1003d4aa0, sc=<optimised out>) at ../accel/tcg/cpu-exec.c:1040 #4 0x000000010016aa0c in cpu_exec_setjmp (cpu=cpu@entry=0x1003d4aa0, sc=<optimised out>) at ../accel/tcg/cpu-exec.c:1057 #5 0x000000010016b0d0 in cpu_exec (cpu=0x1003d4aa0) at ../accel/tcg/cpu-exec.c:1083 #6 0x000000010004d780 in cpu_loop (env=0x1003d4fb0) at ../linux-user/arm/cpu_loop.c:323 #7 0x0000000100047534 in main (argc=<optimised out>, argv=0x7ffffffff178, envp=<optimised out>) at ../linux-user/main.c:975 I tested 74a22a175c4340a01f6f860f72307093e3307681.