diff options
Diffstat (limited to 'gitlab/issues/target_missing/host_missing/accel_missing/2606.toml')
| -rw-r--r-- | gitlab/issues/target_missing/host_missing/accel_missing/2606.toml | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/gitlab/issues/target_missing/host_missing/accel_missing/2606.toml b/gitlab/issues/target_missing/host_missing/accel_missing/2606.toml deleted file mode 100644 index acfd19a6..00000000 --- a/gitlab/issues/target_missing/host_missing/accel_missing/2606.toml +++ /dev/null @@ -1,206 +0,0 @@ -id = 2606 -title = "PowerPC host code is broken on Darwin" -state = "closed" -created_at = "2024-10-03T15:51:31.421Z" -closed_at = "2024-10-04T06:59:57.455Z" -labels = [] -url = "https://gitlab.com/qemu-project/qemu/-/issues/2606" -host-os = "macOS 10.5 / 10.6" -host-arch = "PowerPC" -qemu-version = "7.x and later" -guest-os = "n/a" -guest-arch = "n/a" -description = """Existing code is just wrong for Darwin ppc, it won’t compile. Assembler syntax needs to be fixed and likely adjusted to correct ABI.""" -reproduce = """1. Run the build of qemu on Darwin ppc, see it fail.""" -additional = """This is a patch I used earlier to fix the build (together with few minor unrelated to powerpc fixes): -``` ---- common-user/host/ppc/safe-syscall.inc.S.orig\t2022-04-20 03:10:27.000000000 +0800 -+++ common-user/host/ppc/safe-syscall.inc.S\t2023-08-18 18:08:15.000000000 +0800 -@@ -25,17 +25,11 @@ - # else - # error "Unknown ABI" - # endif --#endif -- --#ifndef _CALL_SYSV --# error "Unsupported ABI" - #endif - -- - .global safe_syscall_base - .global safe_syscall_start - .global safe_syscall_end -- .type safe_syscall_base, @function - - .text - -@@ -47,11 +41,8 @@ - * arguments being syscall arguments (also 'long'). - */ - safe_syscall_base: -- .cfi_startproc -- stwu 1, -8(1) -- .cfi_def_cfa_offset 8 -- stw 30, 4(1) -- .cfi_offset 30, -4 -+ stwu r1, -8(r1) -+ stw r30, 4(r1) - - /* - * We enter with r3 == &signal_pending -@@ -64,14 +55,14 @@ - * and returns the result in r3 - * Shuffle everything around appropriately. - */ -- mr 30, 3 /* signal_pending */ -- mr 0, 4 /* syscall number */ -- mr 3, 5 /* syscall arguments */ -- mr 4, 6 -- mr 5, 7 -- mr 6, 8 -- mr 7, 9 -- mr 8, 10 -+ mr r30, r3 /* signal_pending */ -+ mr r0, r4 /* syscall number */ -+ mr r3, r5 /* syscall arguments */ -+ mr r4, r6 -+ mr r5, r7 -+ mr r6, r8 -+ mr r7, r9 -+ mr r8, r10 - - /* - * This next sequence of code works in conjunction with the -@@ -83,25 +74,22 @@ - */ - safe_syscall_start: - /* if signal_pending is non-zero, don't do the call */ -- lwz 12, 0(30) -- cmpwi 0, 12, 0 -+ lwz r12, 0(r30) -+ cmpwi cr0, r12, 0 - bne- 2f - sc - safe_syscall_end: - /* code path when we did execute the syscall */ -- lwz 30, 4(1) /* restore r30 */ -- addi 1, 1, 8 /* restore stack */ -- .cfi_restore 30 -- .cfi_def_cfa_offset 0 -+ lwz r30, 4(r1) /* restore r30 */ -+ addi r1, r1, 8 /* restore stack */ -+ - bnslr+ /* return on success */ - b safe_syscall_set_errno_tail - - /* code path when we didn't execute the syscall */ --2: lwz 30, 4(1) -- addi 1, 1, 8 -- addi 3, 0, QEMU_ERESTARTSYS -+2: lwz r30, 4(r1) -+ addi r1, r1, 8 -+ addi r3, 0, QEMU_ERESTARTSYS - b safe_syscall_set_errno_tail - -- .cfi_endproc -- - .size safe_syscall_base, .-safe_syscall_base - - ---- common-user/host/ppc64/safe-syscall.inc.S.orig\t2022-04-20 03:10:27.000000000 +0800 -+++ common-user/host/ppc64/safe-syscall.inc.S\t2022-05-31 13:23:21.000000000 +0800 -@@ -13,7 +13,6 @@ - .global safe_syscall_base - .global safe_syscall_start - .global safe_syscall_end -- .type safe_syscall_base, @function - - .text - -@@ -23,19 +22,10 @@ - * second one the system call number (as a 'long'), and all further - * arguments being syscall arguments (also 'long'). - */ --#if _CALL_ELF == 2 --safe_syscall_base: -- .cfi_startproc -- .localentry safe_syscall_base,0 --#else -- .section ".opd","aw" -+ - .align 3 - safe_syscall_base: -- .quad .L.safe_syscall_base,.TOC.@tocbase,0 -- .previous --.L.safe_syscall_base: -- .cfi_startproc --#endif -+ - /* We enter with r3 == &signal_pending - * r4 == syscall number - * r5 ... r10 == syscall arguments -@@ -46,16 +36,15 @@ - * and returns the result in r3 - * Shuffle everything around appropriately. - */ -- std 14, 16(1) /* Preserve r14 in SP+16 */ -- .cfi_offset 14, 16 -- mr 14, 3 /* signal_pending */ -- mr 0, 4 /* syscall number */ -- mr 3, 5 /* syscall arguments */ -- mr 4, 6 -- mr 5, 7 -- mr 6, 8 -- mr 7, 9 -- mr 8, 10 -+ std r14, 16(r1) /* Preserve r14 in SP+16 */ -+ mr r14, r3 /* signal_pending */ -+ mr r0, r4 /* syscall number */ -+ mr r3, r5 /* syscall arguments */ -+ mr r4, r6 -+ mr r5, r7 -+ mr r6, r8 -+ mr r7, r9 -+ mr r8, r10 - - /* This next sequence of code works in conjunction with the - * rewind_if_safe_syscall_function(). If a signal is taken -@@ -66,29 +55,20 @@ - */ - safe_syscall_start: - /* if signal_pending is non-zero, don't do the call */ -- lwz 12, 0(14) -- cmpwi 0, 12, 0 -+ ld r12, 0(r14) -+ cmpdi cr0, r12, 0 - bne- 2f - sc - safe_syscall_end: - /* code path when we did execute the syscall */ -- ld 14, 16(1) /* restore r14 */ -+ ld r14, 16(r1) /* restore r14 */ - bso- 1f - blr - - /* code path when we didn't execute the syscall */ --2: ld 14, 16(1) /* restore r14 */ -- addi 3, 0, QEMU_ERESTARTSYS -+2: ld r14, 16(r1) /* restore r14 */ -+ addi r3, 0, QEMU_ERESTARTSYS - - /* code path setting errno */ - 1: b safe_syscall_set_errno_tail - nop /* per abi, for the linker to modify */ -- -- .cfi_endproc -- --#if _CALL_ELF == 2 -- .size safe_syscall_base, .-safe_syscall_base --#else -- .size safe_syscall_base, .-.L.safe_syscall_base -- .size .L.safe_syscall_base, .-.L.safe_syscall_base --#endif -``` -(Obviously, it is not made in a portable way – that was not needed at the time.) - -Unfortunately, while build itself worked, the binary crashed on launch. So something is not quite right, maybe with ABI compliance.""" |