From 32a51d89564fcdebdb3361f8b510abf7ceb4df4f Mon Sep 17 00:00:00 2001 From: q66 Date: Sun, 14 Nov 2021 14:54:16 +0100 Subject: [PATCH] ffcall: update to 2.4 Closes https://github.com/void-linux/void-packages/pull/32722 --- srcpkgs/ffcall/files/ppc64-be.patch | 1376 +++++++++++++++------------ srcpkgs/ffcall/template | 5 +- 2 files changed, 760 insertions(+), 621 deletions(-) diff --git a/srcpkgs/ffcall/files/ppc64-be.patch b/srcpkgs/ffcall/files/ppc64-be.patch index a6c1a252bdf..7fa6ef2f7a5 100644 --- a/srcpkgs/ffcall/files/ppc64-be.patch +++ b/srcpkgs/ffcall/files/ppc64-be.patch @@ -1,8 +1,572 @@ -Source: https://code.foxkit.us/adelie/packages/blob/master/user/libffcall/ppc64.patch - ---- libffcall-2.2/avcall/avcall-powerpc64.c.old 2018-09-17 16:47:43.000000000 +0000 -+++ libffcall-2.2/avcall/avcall-powerpc64.c 2020-05-11 23:06:57.534813743 +0000 -@@ -181,111 +181,111 @@ +--- a/avcall/avcall-powerpc64-elfv2-linux.S ++++ b/avcall/avcall-powerpc64-elfv2-linux.S +@@ -1,308 +1,326 @@ + .file "avcall-powerpc64.c" + .machine power4 + .abiversion 2 +- .section ".toc","aw" + .section ".text" + .align 2 + .p2align 4,,15 + .globl avcall_call + .type avcall_call, @function + avcall_call: +-0: addis 2,12,.TOC.-0b@ha +- addi 2,2,.TOC.-0b@l ++.LFB0: ++ .cfi_startproc ++.LCF0: ++0: addis 2,12,.TOC.-.LCF0@ha ++ addi 2,2,.TOC.-.LCF0@l + .localentry avcall_call,.-avcall_call + mflr 0 ++ std 29,-24(1) + std 30,-16(1) + std 31,-8(1) ++ .cfi_register 65, 0 ++ .cfi_offset 29, -24 ++ .cfi_offset 30, -16 ++ .cfi_offset 31, -8 + mr 30,3 + std 0,16(1) +- stdu 1,-112(1) +- ld 3,48(3) +- ld 9,40(30) ++ stdu 1,-144(1) ++ .cfi_def_cfa_offset 144 ++ .cfi_offset 65, 16 ++ ld 29,48(3) ++ ld 5,40(3) + mr 31,1 +- ld 10,0(1) +- subf 9,3,9 +- stdu 10,-2064(1) +- sradi 9,9,3 +- cmpwi 7,9,8 +- ble 7,.L6 +- addi 10,9,-9 +- addi 8,1,96 +- addi 9,3,56 +- rldicl 10,10,0,32 +- addi 8,8,-8 +- addi 10,10,8 +- sldi 10,10,3 +- add 10,3,10 +- .p2align 4,,15 ++ .cfi_def_cfa_register 31 ++ ld 9,0(1) ++ ld 10,-28688(13) ++ std 10,104(31) ++ li 10,0 ++ subf 5,29,5 ++ stdu 9,-2048(1) ++ sradi 5,5,3 ++ cmpwi 0,5,8 ++ ble 0,.L5 ++ addi 5,5,-9 ++ addi 3,1,96 ++ addi 4,29,64 ++ rldic 5,5,3,29 ++ addi 5,5,8 ++ bl memcpy ++ nop + .L5: +- ldu 7,8(9) +- cmpld 7,10,9 +- stdu 7,8(8) +- bne 7,.L5 +-.L6: + ld 10,64(30) + addi 9,30,72 + subf 9,9,10 + sradi 9,9,3 ++ cmpwi 0,9,0 + extsw 9,9 +- cmpwi 7,9,0 +- ble 7,.L4 +- cmpwi 7,9,1 +- beq 7,.L7 +- cmpwi 7,9,2 +- beq 7,.L8 +- cmpwi 7,9,3 +- beq 7,.L9 +- cmpwi 7,9,4 +- beq 7,.L10 +- cmpwi 7,9,5 +- beq 7,.L11 +- cmpwi 7,9,6 +- beq 7,.L12 +- cmpwi 7,9,7 +- beq 7,.L13 +- cmpwi 7,9,8 +- beq 7,.L14 +- cmpwi 7,9,9 +- beq 7,.L15 +- cmpwi 7,9,10 +- beq 7,.L16 +- cmpwi 7,9,11 +- beq 7,.L17 +- cmpwi 7,9,12 +- beq 7,.L18 ++ ble 0,.L4 ++ cmpwi 0,9,1 ++ beq 0,.L6 ++ cmpwi 0,9,2 ++ beq 0,.L7 ++ cmpwi 0,9,3 ++ beq 0,.L8 ++ cmpwi 0,9,4 ++ beq 0,.L9 ++ cmpwi 0,9,5 ++ beq 0,.L10 ++ cmpwi 0,9,6 ++ beq 0,.L11 ++ cmpwi 0,9,7 ++ beq 0,.L12 ++ cmpwi 0,9,8 ++ beq 0,.L13 ++ cmpwi 0,9,9 ++ beq 0,.L14 ++ cmpwi 0,9,10 ++ beq 0,.L15 ++ cmpwi 0,9,11 ++ beq 0,.L16 ++ cmpwi 0,9,12 ++ beq 0,.L17 + lfd 13,168(30) +-.L18: +- lfd 12,160(30) + .L17: +- lfd 11,152(30) ++ lfd 12,160(30) + .L16: +- lfd 10,144(30) ++ lfd 11,152(30) + .L15: +- lfd 9,136(30) ++ lfd 10,144(30) + .L14: +- lfd 8,128(30) ++ lfd 9,136(30) + .L13: +- lfd 7,120(30) ++ lfd 8,128(30) + .L12: +- lfd 6,112(30) ++ lfd 7,120(30) + .L11: +- lfd 5,104(30) ++ lfd 6,112(30) + .L10: +- lfd 4,96(30) ++ lfd 5,104(30) + .L9: +- lfd 3,88(30) ++ lfd 4,96(30) + .L8: +- lfd 2,80(30) ++ lfd 3,88(30) + .L7: ++ lfd 2,80(30) ++.L6: + lfd 1,72(30) + .L4: +- ld 11,8(30) +- ld 9,48(3) +- ld 10,56(3) +- ld 8,40(3) +- ld 7,32(3) +- ld 6,24(3) +- ld 5,16(3) +- ld 4,8(3) +- mtctr 11 +- ld 3,0(3) +- mr 12,11 ++ ld 12,8(30) ++ ld 9,48(29) ++ ld 10,56(29) ++ ld 8,40(29) ++ ld 7,32(29) ++ ld 6,24(29) ++ ld 5,16(29) ++ ld 4,8(29) ++ mtctr 12 ++ ld 3,0(29) + std 2,24(1) + bctrl + ld 2,24(1) + lwz 9,24(30) +- cmplwi 7,9,1 +- beq 7,.L19 +- cmplwi 7,9,2 +- beq 7,.L43 +- cmplwi 7,9,3 +- beq 7,.L43 +- cmplwi 7,9,4 +- beq 7,.L43 +- cmplwi 7,9,5 +- beq 7,.L44 +- cmplwi 7,9,6 +- beq 7,.L44 +- cmplwi 7,9,7 +- beq 7,.L45 +- cmplwi 7,9,8 +- beq 7,.L45 +- cmplwi 7,9,9 +- beq 7,.L49 +- cmplwi 7,9,10 +- beq 7,.L49 +- cmplwi 7,9,11 +- beq 7,.L49 +- cmplwi 7,9,12 +- beq 7,.L49 +- cmplwi 7,9,13 +- beq 7,.L51 +- cmplwi 7,9,14 +- beq 7,.L52 +- cmplwi 7,9,15 +- beq 7,.L49 +- cmplwi 7,9,16 +- bne 7,.L19 ++ cmplwi 0,9,1 ++ beq 0,.L19 ++ cmplwi 0,9,2 ++ beq 0,.L58 ++ cmplwi 0,9,3 ++ beq 0,.L58 ++ cmplwi 0,9,4 ++ beq 0,.L58 ++ cmplwi 0,9,5 ++ beq 0,.L59 ++ cmplwi 0,9,6 ++ beq 0,.L59 ++ cmplwi 0,9,7 ++ beq 0,.L60 ++ cmplwi 0,9,8 ++ beq 0,.L60 ++ cmplwi 0,9,9 ++ beq 0,.L64 ++ cmplwi 0,9,10 ++ beq 0,.L64 ++ cmplwi 0,9,11 ++ beq 0,.L64 ++ cmplwi 0,9,12 ++ beq 0,.L64 ++ cmplwi 0,9,13 ++ beq 0,.L67 ++ cmplwi 0,9,14 ++ beq 0,.L68 ++ cmplwi 0,9,15 ++ beq 0,.L64 ++ cmplwi 0,9,16 ++ bne 0,.L19 + lwz 9,0(30) +- rldicl. 10,9,55,63 ++ andi. 9,9,0x200 + beq 0,.L19 + ld 10,32(30) + addi 9,10,-1 +- cmpldi 7,9,15 +- bgt 7,.L19 +- ld 8,16(30) +- cmpldi 7,10,8 +- rldicl 9,8,0,61 +- rldicr 8,8,0,60 +- add 10,10,9 +- bgt 7,.L34 +- cmpldi 7,10,8 +- bgt 7,.L35 +- slwi 10,10,3 +- li 7,2 +- ld 6,0(8) +- slwi 9,9,3 +- addi 10,10,-1 +- sld 10,7,10 +- li 7,1 +- sld 7,7,9 +- sld 9,3,9 +- subf 10,7,10 +- xor 9,9,6 +- and 9,10,9 +- xor 9,9,6 +- std 9,0(8) ++ cmpldi 0,9,15 ++ bgt 0,.L19 ++ cmpldi 0,10,1 ++ ld 9,16(30) ++ rlwinm 8,3,0,0xff ++ beq 0,.L65 ++ cmpldi 0,10,2 ++ beq 0,.L69 ++ cmpldi 0,10,3 ++ rldicl 8,3,48,56 ++ beq 0,.L70 ++ cmpldi 0,10,4 ++ beq 0,.L71 ++ cmpldi 0,10,5 ++ rldicl 8,3,32,56 ++ beq 0,.L72 ++ cmpldi 0,10,6 ++ rldicl 7,3,24,56 ++ beq 0,.L73 ++ cmpldi 0,10,7 ++ rldicl 10,3,16,56 ++ beq 0,.L74 ++ std 3,0(9) ++ ld 10,32(30) ++ cmpldi 0,10,8 ++ beq 0,.L19 ++ cmpldi 0,10,9 ++ beq 0,.L75 ++ cmpldi 0,10,10 ++ beq 0,.L76 ++ cmpldi 0,10,11 ++ beq 0,.L77 ++ cmpldi 0,10,12 ++ beq 0,.L78 ++ cmpldi 0,10,13 ++ beq 0,.L79 ++ cmpldi 0,10,14 ++ beq 0,.L80 ++ cmpldi 0,10,15 ++ beq 0,.L81 ++ cmpldi 0,10,16 ++ bne 0,.L19 ++ std 4,8(9) ++ .p2align 4,,15 + .L19: +- addi 1,31,112 ++ ld 9,104(31) ++ ld 10,-28688(13) ++ xor. 9,9,10 ++ li 10,0 ++ bne 0,.L82 ++ addi 1,31,144 ++ .cfi_remember_state ++ .cfi_def_cfa 1, 0 + li 3,0 + ld 0,16(1) ++ ld 29,-24(1) + ld 30,-16(1) + ld 31,-8(1) + mtlr 0 ++ .cfi_restore 65 ++ .cfi_restore 31 ++ .cfi_restore 30 ++ .cfi_restore 29 + blr + .p2align 4,,15 +-.L43: ++.L58: ++ .cfi_restore_state + ld 9,16(30) + stb 3,0(9) +- addi 1,31,112 +- li 3,0 +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr +-.L45: +- ld 9,16(30) +- stw 3,0(9) + b .L19 + .p2align 4,,15 +-.L44: ++.L59: + ld 9,16(30) + sth 3,0(9) +- addi 1,31,112 +- li 3,0 +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr +- .p2align 4,,15 +-.L49: ++ b .L19 ++.L60: + ld 9,16(30) +- std 3,0(9) +- addi 1,31,112 +- li 3,0 +- ld 0,16(1) +- ld 30,-16(1) +- ld 31,-8(1) +- mtlr 0 +- blr +-.L52: ++ stw 3,0(9) ++ b .L19 ++.L64: + ld 9,16(30) +- stfd 1,0(9) ++ std 3,0(9) + b .L19 +-.L51: ++.L67: + ld 9,16(30) + stfs 1,0(9) + b .L19 +-.L34: +- rldicl 9,9,0,32 +- ld 11,0(8) +- li 6,-1 +- cmpldi 7,10,16 +- slwi 5,9,3 +- sld 7,3,5 +- sld 6,6,5 +- xor 7,7,11 +- and 7,6,7 +- xor 7,7,11 +- std 7,0(8) +- ble 7,.L53 +- mulli 9,9,-8 +- ld 11,16(8) +- slwi 10,10,3 +- li 7,2 +- addi 10,10,-129 +- addi 9,9,64 +- sld 7,7,10 +- srad 6,4,9 +- srad 3,3,9 +- addi 7,7,-1 +- sld 9,4,5 +- xor 10,6,11 +- or 9,3,9 +- and 10,7,10 +- std 9,8(8) +- xor 10,10,11 +- std 10,16(8) ++.L68: ++ ld 9,16(30) ++ stfd 1,0(9) + b .L19 +-.L35: +- rldicl 9,9,0,32 +- slwi 10,10,3 +- ld 11,0(8) +- ld 4,8(8) +- li 7,2 +- mulli 6,9,-8 +- addi 10,10,-65 +- slwi 9,9,3 +- sld 10,7,10 +- sld 5,3,9 +- li 7,-1 +- addi 6,6,64 +- addi 10,10,-1 +- sld 7,7,9 +- srad 3,3,6 +- xor 6,5,11 +- xor 9,3,4 +- and 7,7,6 +- and 9,10,9 +- xor 10,7,11 +- xor 9,9,4 +- std 10,0(8) +- std 9,8(8) ++.L70: ++ sth 3,1(9) ++.L65: ++ stb 8,0(9) + b .L19 +-.L53: +- mulli 9,9,-4 +- slwi 10,10,3 +- ld 11,8(8) +- sld 4,4,5 +- addi 10,10,-65 +- li 6,2 +- addi 9,9,32 +- sld 10,6,10 +- srad 3,3,9 +- srad 9,3,9 +- or 7,9,4 +- addi 9,10,-1 +- xor 10,7,11 +- and 9,10,9 +- xor 9,9,11 +- std 9,8(8) ++.L82: ++ bl __stack_chk_fail ++ nop ++.L81: ++ srdi 6,4,32 ++ sradi 7,4,24 ++ sradi 8,4,16 ++ sradi 10,4,8 ++ stw 6,8(9) ++ stb 7,12(9) ++ stb 8,13(9) ++ stb 10,14(9) ++ b .L19 ++.L72: ++ stw 3,1(9) ++ stb 8,0(9) ++ b .L19 ++.L71: ++ stw 3,0(9) ++ b .L19 ++.L69: ++ sth 3,0(9) ++ b .L19 ++.L80: ++ srdi 7,4,32 ++ sradi 8,4,24 ++ sradi 10,4,16 ++ stw 7,8(9) ++ stb 8,12(9) ++ stb 10,13(9) ++ b .L19 ++.L79: ++ srdi 8,4,32 ++ sradi 10,4,24 ++ stw 8,8(9) ++ stb 10,12(9) ++ b .L19 ++.L78: ++ srdi 4,4,32 ++ stw 4,8(9) ++ b .L19 ++.L77: ++ srdi 8,4,48 ++ sradi 10,4,40 ++ sth 8,8(9) ++ stb 10,10(9) ++ b .L19 ++.L76: ++ srdi 4,4,48 ++ sth 4,8(9) ++ b .L19 ++.L75: ++ sradi 4,4,56 ++ stb 4,8(9) ++ b .L19 ++.L74: ++ stw 3,3(9) ++ stb 8,2(9) ++ stb 7,1(9) ++ stb 10,0(9) ++ b .L19 ++.L73: ++ stw 3,2(9) ++ stb 8,1(9) ++ stb 7,0(9) + b .L19 + .long 0 +- .byte 0,0,0,1,128,2,0,0 ++ .byte 0,0,0,1,128,3,0,0 ++ .cfi_endproc ++.LFE0: + .size avcall_call,.-avcall_call + #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ + .section .note.GNU-stack,"",@progbits +--- a/avcall/avcall-powerpc64.c ++++ b/avcall/avcall-powerpc64.c +@@ -178,111 +178,111 @@ avcall_call(av_alist* list) /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ if (l->rsize > 0 && l->rsize <= 16) { void* raddr = l->raddr; @@ -183,617 +747,8 @@ Source: https://code.foxkit.us/adelie/packages/blob/master/user/libffcall/ppc64. } } #else /* Optimized: fewer conditional jumps, fewer memory accesses */ ---- libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:04.000000000 +0000 -+++ libffcall-2.2/avcall/avcall-powerpc64-elfv2-linux.S 2020-05-11 23:07:17.992574561 +0000 -@@ -1,44 +1,52 @@ - .file "avcall-powerpc64.c" -- .machine power4 - .abiversion 2 -- .section ".toc","aw" - .section ".text" - .align 2 - .p2align 4,,15 - .globl avcall_call - .type avcall_call, @function - avcall_call: --0: addis 2,12,.TOC.-0b@ha -- addi 2,2,.TOC.-0b@l -+.LFB0: -+ .cfi_startproc -+.LCF0: -+0: addis 2,12,.TOC.-.LCF0@ha -+ addi 2,2,.TOC.-.LCF0@l - .localentry avcall_call,.-avcall_call - mflr 0 - std 30,-16(1) - std 31,-8(1) -+ .cfi_register 65, 0 -+ .cfi_offset 30, -16 -+ .cfi_offset 31, -8 - mr 30,3 - std 0,16(1) -- stdu 1,-112(1) -- ld 3,48(3) -- ld 9,40(30) -+ stdu 1,-128(1) -+ .cfi_def_cfa_offset 128 -+ .cfi_offset 65, 16 - mr 31,1 -+ .cfi_def_cfa_register 31 -+ ld 3,48(3) - ld 10,0(1) -+ ld 9,-28688(13) -+ std 9,104(31) -+ li 9,0 -+ ld 9,40(30) -+ stdu 10,-2048(1) - subf 9,3,9 -- stdu 10,-2064(1) - sradi 9,9,3 - cmpwi 7,9,8 - ble 7,.L6 -- addi 10,9,-9 -- addi 8,1,96 -- addi 9,3,56 -- rldicl 10,10,0,32 -- addi 8,8,-8 -- addi 10,10,8 -- sldi 10,10,3 -- add 10,3,10 -+ addi 8,9,-9 -+ addi 7,1,96 -+ addi 10,3,56 -+ rldic 8,8,3,29 -+ addi 9,7,-8 -+ add 7,7,8 - .p2align 4,,15 - .L5: -- ldu 7,8(9) -- cmpld 7,10,9 -- stdu 7,8(8) -+ ldu 8,8(10) -+ stdu 8,8(9) -+ cmpld 7,7,9 - bne 7,.L5 - .L6: - ld 10,64(30) -@@ -114,191 +122,210 @@ - ld 2,24(1) - lwz 9,24(30) - cmplwi 7,9,1 -- beq 7,.L19 -+ beq 7,.L20 - cmpdi 7,9,0 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,2 -- beq 7,.L45 -+ beq 7,.L62 - cmplwi 7,9,3 -- beq 7,.L45 -+ beq 7,.L62 - cmplwi 7,9,4 -- beq 7,.L45 -+ beq 7,.L62 - cmplwi 7,9,5 -- beq 7,.L46 -+ beq 7,.L63 - cmplwi 7,9,6 -- beq 7,.L46 -+ beq 7,.L63 - cmplwi 7,9,7 -- beq 7,.L47 -+ beq 7,.L64 - cmplwi 7,9,8 -- beq 7,.L47 -+ beq 7,.L64 - cmplwi 7,9,9 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,10 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,11 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,12 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,13 -- beq 7,.L52 -+ beq 7,.L71 - cmplwi 7,9,14 -- beq 7,.L53 -+ beq 7,.L72 - cmplwi 7,9,15 -- beq 7,.L50 -+ beq 7,.L68 - cmplwi 7,9,16 -- bne 7,.L19 -+ bne 7,.L20 - lwz 9,0(30) -- rldicl. 10,9,55,63 -- beq 0,.L19 -+ andi. 9,9,0x200 -+ beq 0,.L20 - ld 10,32(30) - addi 9,10,-1 - cmpldi 7,9,15 -- bgt 7,.L19 -- ld 8,16(30) -- cmpldi 7,10,8 -- rldicl 9,8,0,61 -- rldicr 8,8,0,60 -- add 10,10,9 -- bgt 7,.L35 -+ bgt 7,.L20 -+ cmpldi 7,10,1 -+ ld 9,16(30) -+ rlwinm 8,3,0,0xff -+ beq 7,.L69 -+ cmpldi 7,10,2 -+ beq 7,.L73 -+ cmpldi 7,10,3 -+ rldicl 8,3,48,56 -+ beq 7,.L74 -+ cmpldi 7,10,4 -+ beq 7,.L75 -+ cmpldi 7,10,5 -+ rldicl 8,3,32,56 -+ beq 7,.L76 -+ cmpldi 7,10,6 -+ rldicl 7,3,24,56 -+ beq 7,.L77 -+ cmpldi 7,10,7 -+ rldicl 6,3,16,56 -+ beq 7,.L78 -+ std 3,0(9) -+ ld 10,32(30) - cmpldi 7,10,8 -- bgt 7,.L36 -- slwi 10,10,3 -- li 7,2 -- ld 6,0(8) -- slwi 9,9,3 -- addi 10,10,-1 -- sld 10,7,10 -- li 7,1 -- sld 7,7,9 -- sld 9,3,9 -- subf 10,7,10 -- xor 9,9,6 -- and 9,10,9 -- xor 9,9,6 -- std 9,0(8) --.L19: -- addi 1,31,112 -+ beq 7,.L20 -+ cmpldi 7,10,9 -+ beq 7,.L79 -+ cmpldi 7,10,10 -+ beq 7,.L80 -+ cmpldi 7,10,11 -+ beq 7,.L81 -+ cmpldi 7,10,12 -+ beq 7,.L82 -+ cmpldi 7,10,13 -+ beq 7,.L83 -+ cmpldi 7,10,14 -+ beq 7,.L84 -+ cmpldi 7,10,15 -+ beq 7,.L85 -+ cmpldi 7,10,16 -+ bne 7,.L20 -+ std 4,8(9) -+ .p2align 4,,15 -+.L20: -+ ld 9,104(31) -+ ld 10,-28688(13) -+ xor. 9,9,10 -+ li 10,0 - li 3,0 -+ bne 0,.L86 -+ addi 1,31,128 -+ .cfi_remember_state -+ .cfi_def_cfa 1, 0 - ld 0,16(1) - ld 30,-16(1) - ld 31,-8(1) - mtlr 0 -+ .cfi_restore 65 -+ .cfi_restore 31 -+ .cfi_restore 30 - blr - .p2align 4,,15 --.L50: -+.L68: -+ .cfi_restore_state - ld 9,16(30) - std 3,0(9) -- addi 1,31,112 -- li 3,0 -- ld 0,16(1) -- ld 30,-16(1) -- ld 31,-8(1) -- mtlr 0 -- blr -+ b .L20 - .p2align 4,,15 --.L45: -+.L62: - ld 9,16(30) - stb 3,0(9) -- addi 1,31,112 -- li 3,0 -- ld 0,16(1) -- ld 30,-16(1) -- ld 31,-8(1) -- mtlr 0 -- blr --.L46: -+ b .L20 -+.L63: - ld 9,16(30) - sth 3,0(9) -- b .L19 --.L47: -+ b .L20 -+.L64: - ld 9,16(30) - stw 3,0(9) -- b .L19 --.L52: -+ b .L20 -+.L71: - ld 9,16(30) - stfs 1,0(9) -- b .L19 --.L53: -+ b .L20 -+.L72: - ld 9,16(30) - stfd 1,0(9) -- b .L19 --.L36: -- rldicl 9,9,0,32 -- slwi 10,10,3 -- ld 11,0(8) -- ld 4,8(8) -- li 7,2 -- mulli 6,9,-8 -- addi 10,10,-65 -- slwi 9,9,3 -- sld 10,7,10 -- sld 5,3,9 -- li 7,-1 -- addi 6,6,64 -- addi 10,10,-1 -- sld 7,7,9 -- srad 3,3,6 -- xor 6,5,11 -- xor 9,3,4 -- and 7,7,6 -- and 9,10,9 -- xor 10,7,11 -- xor 9,9,4 -- std 10,0(8) -- std 9,8(8) -- b .L19 --.L35: -- rldicl 9,9,0,32 -- ld 11,0(8) -- li 6,-1 -- cmpldi 7,10,16 -- slwi 5,9,3 -- sld 7,3,5 -- sld 6,6,5 -- xor 7,7,11 -- and 7,6,7 -- xor 7,7,11 -- std 7,0(8) -- ble 7,.L54 -- mulli 9,9,-8 -- ld 11,16(8) -- slwi 10,10,3 -- li 7,2 -- addi 10,10,-129 -- addi 9,9,64 -- sld 7,7,10 -- srad 6,4,9 -- srad 3,3,9 -- addi 7,7,-1 -- sld 9,4,5 -- xor 10,6,11 -- or 9,3,9 -- and 10,7,10 -- std 9,8(8) -- xor 10,10,11 -- std 10,16(8) -- b .L19 --.L54: -- mulli 9,9,-4 -- slwi 10,10,3 -- ld 11,8(8) -- sld 4,4,5 -- addi 10,10,-65 -- li 6,2 -- addi 9,9,32 -- sld 10,6,10 -- srad 3,3,9 -- srad 9,3,9 -- or 7,9,4 -- addi 9,10,-1 -- xor 10,7,11 -- and 9,10,9 -- xor 9,9,11 -- std 9,8(8) -- b .L19 -+ b .L20 -+.L86: -+ bl __stack_chk_fail -+ nop -+.L74: -+ sth 3,1(9) -+.L69: -+ stb 8,0(9) -+ b .L20 -+.L85: -+ srdi 7,4,32 -+ sradi 8,4,24 -+ sradi 10,4,16 -+ sradi 4,4,8 -+ stw 7,8(9) -+ stb 8,12(9) -+ stb 10,13(9) -+ stb 4,14(9) -+ b .L20 -+.L76: -+ stw 3,1(9) -+ stb 8,0(9) -+ b .L20 -+.L75: -+ stw 3,0(9) -+ b .L20 -+.L73: -+ sth 3,0(9) -+ b .L20 -+.L84: -+ srdi 8,4,32 -+ sradi 10,4,24 -+ sradi 4,4,16 -+ stw 8,8(9) -+ stb 10,12(9) -+ stb 4,13(9) -+ b .L20 -+.L83: -+ srdi 10,4,32 -+ sradi 4,4,24 -+ stw 10,8(9) -+ stb 4,12(9) -+ b .L20 -+.L82: -+ srdi 4,4,32 -+ stw 4,8(9) -+ b .L20 -+.L81: -+ srdi 10,4,48 -+ sradi 4,4,40 -+ sth 10,8(9) -+ stb 4,10(9) -+ b .L20 -+.L80: -+ srdi 4,4,48 -+ sth 4,8(9) -+ b .L20 -+.L79: -+ sradi 4,4,56 -+ stb 4,8(9) -+ b .L20 -+.L78: -+ stw 3,3(9) -+ stb 8,2(9) -+ stb 7,1(9) -+ stb 6,0(9) -+ b .L20 -+.L77: -+ stw 3,2(9) -+ stb 8,1(9) -+ stb 7,0(9) -+ b .L20 - .long 0 - .byte 0,0,0,1,128,2,0,0 -+ .cfi_endproc -+.LFE0: - .size avcall_call,.-avcall_call -+ .gnu_attribute 4, 9 - #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ - .section .note.GNU-stack,"",@progbits - #endif ---- libffcall-2.2/vacall/vacall-powerpc64.c.old 2020-05-11 23:11:15.566571148 +0000 -+++ libffcall-2.2/vacall/vacall-powerpc64.c 2020-05-11 23:16:52.489693582 +0000 -@@ -140,111 +140,111 @@ - if (list.flags & __VA_REGISTER_STRUCT_RETURN) { - /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ - if (list.rsize > 0 && list.rsize <= 16) { -- #if 0 /* Unoptimized */ -+ #if 1 /* Unoptimized */ - if (list.rsize == 1) { - iret = (__vaword)((unsigned char *) list.raddr)[0]; - } else - if (list.rsize == 2) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8); -+ iret = ((__vaword)((unsigned char *) list.raddr)[1]) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 8); - } else - if (list.rsize == 3) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -+ iret = ((__vaword)((unsigned char *) list.raddr)[2]) - | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[2] << 16); -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 16); - } else - if (list.rsize == 4) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[3] << 24); -+ iret = ((__vaword)((unsigned char *) list.raddr)[3]) -+ | ((__vaword)((unsigned char *) list.raddr)[2] << 8) -+ | ((__vaword)((unsigned char *) list.raddr)[1] << 16) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 24); - } else - if (list.rsize == 5) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -+ iret = ((__vaword)((unsigned char *) list.raddr)[4]) -+ | ((__vaword)((unsigned char *) list.raddr)[3] << 8) - | ((__vaword)((unsigned char *) list.raddr)[2] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[4] << 32); -+ | ((__vaword)((unsigned char *) list.raddr)[1] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 32); - } else - if (list.rsize == 6) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[5] << 40); -+ iret = ((__vaword)((unsigned char *) list.raddr)[5]) -+ | ((__vaword)((unsigned char *) list.raddr)[4] << 8) -+ | ((__vaword)((unsigned char *) list.raddr)[3] << 16) -+ | ((__vaword)((unsigned char *) list.raddr)[2] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[1] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 40); - } else - if (list.rsize == 7) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) -+ iret = ((__vaword)((unsigned char *) list.raddr)[6]) -+ | ((__vaword)((unsigned char *) list.raddr)[5] << 8) -+ | ((__vaword)((unsigned char *) list.raddr)[4] << 16) - | ((__vaword)((unsigned char *) list.raddr)[3] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[5] << 40) -- | ((__vaword)((unsigned char *) list.raddr)[6] << 48); -+ | ((__vaword)((unsigned char *) list.raddr)[2] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[1] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 48); - } else - if (list.rsize >= 8 && list.rsize <= 16) { -- iret = ((__vaword)((unsigned char *) list.raddr)[0]) -- | ((__vaword)((unsigned char *) list.raddr)[1] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[2] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[3] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[4] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[5] << 40) -- | ((__vaword)((unsigned char *) list.raddr)[6] << 48) -- | ((__vaword)((unsigned char *) list.raddr)[7] << 56); -+ iret = ((__vaword)((unsigned char *) list.raddr)[7]) -+ | ((__vaword)((unsigned char *) list.raddr)[6] << 8) -+ | ((__vaword)((unsigned char *) list.raddr)[5] << 16) -+ | ((__vaword)((unsigned char *) list.raddr)[4] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[3] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[2] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[1] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[0] << 56); - if (list.rsize == 8) { - } else - if (list.rsize == 9) { -- iret2 = (__vaword)((unsigned char *) list.raddr)[8]; -+ iret2 = (__vaword)((unsigned char *) list.raddr)[8] << 56; - } else - if (list.rsize == 10) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48); - } else - if (list.rsize == 11) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40); - } else - if (list.rsize == 12) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[11] << 24); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[11] << 32); - } else - if (list.rsize == 13) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[12] << 32); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[12] << 24); - } else - if (list.rsize == 14) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[13] << 40); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[13] << 16); - } else - if (list.rsize == 15) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[13] << 40) -- | ((__vaword)((unsigned char *) list.raddr)[14] << 48); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[13] << 16) -+ | ((__vaword)((unsigned char *) list.raddr)[14] << 8); - } else - if (list.rsize == 16) { -- iret2 = ((__vaword)((unsigned char *) list.raddr)[8]) -- | ((__vaword)((unsigned char *) list.raddr)[9] << 8) -- | ((__vaword)((unsigned char *) list.raddr)[10] << 16) -- | ((__vaword)((unsigned char *) list.raddr)[11] << 24) -- | ((__vaword)((unsigned char *) list.raddr)[12] << 32) -- | ((__vaword)((unsigned char *) list.raddr)[13] << 40) -- | ((__vaword)((unsigned char *) list.raddr)[14] << 48) -- | ((__vaword)((unsigned char *) list.raddr)[15] << 56); -+ iret2 = ((__vaword)((unsigned char *) list.raddr)[8] << 56) -+ | ((__vaword)((unsigned char *) list.raddr)[9] << 48) -+ | ((__vaword)((unsigned char *) list.raddr)[10] << 40) -+ | ((__vaword)((unsigned char *) list.raddr)[11] << 32) -+ | ((__vaword)((unsigned char *) list.raddr)[12] << 24) -+ | ((__vaword)((unsigned char *) list.raddr)[13] << 16) -+ | ((__vaword)((unsigned char *) list.raddr)[14] << 8) -+ | ((__vaword)((unsigned char *) list.raddr)[15]); - } - } - #else /* Optimized: fewer conditional jumps, fewer memory accesses */ ---- libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:06.000000000 +0000 -+++ libffcall-2.2/vacall/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:18:00.842212129 +0000 +--- a/vacall/vacall-powerpc64-elfv2-linux.S ++++ b/vacall/vacall-powerpc64-elfv2-linux.S @@ -1,9 +1,8 @@ .file "vacall-powerpc64.c" - .machine power4 @@ -870,7 +825,7 @@ Source: https://code.foxkit.us/adelie/packages/blob/master/user/libffcall/ppc64. stfd 7,144(31) stfd 8,152(31) stfd 9,160(31) -@@ -53,173 +62,232 @@ +@@ -53,173 +62,232 @@ vacall_receiver: stfd 11,176(31) stfd 12,184(31) stfd 13,192(31) @@ -1217,8 +1172,191 @@ Source: https://code.foxkit.us/adelie/packages/blob/master/user/libffcall/ppc64. #if defined __linux__ || defined __FreeBSD__ || defined __FreeBSD_kernel__ || defined __DragonFly__ .section .note.GNU-stack,"",@progbits #endif ---- libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S.old 2019-08-25 01:03:08.000000000 +0000 -+++ libffcall-2.2/callback/vacall_r/vacall-powerpc64-elfv2-linux.S 2020-05-11 23:26:54.443785997 +0000 +--- a/vacall/vacall-powerpc64.c ++++ b/vacall/vacall-powerpc64.c +@@ -140,111 +140,111 @@ vacall_receiver (__vaword word1, __vaword word2, __vaword word3, __vaword word4, + if (list.flags & __VA_REGISTER_STRUCT_RETURN) { + /* In the ELFv2 ABI, gcc returns structs of size <= 16 in registers. */ + if (list.rsize > 0 && list.rsize <= 16) { +- #if 0 /* Unoptimized */ ++ #if 1 /* Unoptimized */ + if (list.rsize == 1) { + iret = (__varword)((unsigned char *) list.raddr)[0]; + } else + if (list.rsize == 2) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8); ++ iret = ((__varword)((unsigned char *) list.raddr)[1]) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 8); + } else + if (list.rsize == 3) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) ++ iret = ((__varword)((unsigned char *) list.raddr)[2]) + | ((__varword)((unsigned char *) list.raddr)[1] << 8) +- | ((__varword)((unsigned char *) list.raddr)[2] << 16); ++ | ((__varword)((unsigned char *) list.raddr)[0] << 16); + } else + if (list.rsize == 4) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8) +- | ((__varword)((unsigned char *) list.raddr)[2] << 16) +- | ((__varword)((unsigned char *) list.raddr)[3] << 24); ++ iret = ((__varword)((unsigned char *) list.raddr)[3]) ++ | ((__varword)((unsigned char *) list.raddr)[2] << 8) ++ | ((__varword)((unsigned char *) list.raddr)[1] << 16) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 24); + } else + if (list.rsize == 5) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8) ++ iret = ((__varword)((unsigned char *) list.raddr)[4]) ++ | ((__varword)((unsigned char *) list.raddr)[3] << 8) + | ((__varword)((unsigned char *) list.raddr)[2] << 16) +- | ((__varword)((unsigned char *) list.raddr)[3] << 24) +- | ((__varword)((unsigned char *) list.raddr)[4] << 32); ++ | ((__varword)((unsigned char *) list.raddr)[1] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 32); + } else + if (list.rsize == 6) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8) +- | ((__varword)((unsigned char *) list.raddr)[2] << 16) +- | ((__varword)((unsigned char *) list.raddr)[3] << 24) +- | ((__varword)((unsigned char *) list.raddr)[4] << 32) +- | ((__varword)((unsigned char *) list.raddr)[5] << 40); ++ iret = ((__varword)((unsigned char *) list.raddr)[5]) ++ | ((__varword)((unsigned char *) list.raddr)[4] << 8) ++ | ((__varword)((unsigned char *) list.raddr)[3] << 16) ++ | ((__varword)((unsigned char *) list.raddr)[2] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[1] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 40); + } else + if (list.rsize == 7) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8) +- | ((__varword)((unsigned char *) list.raddr)[2] << 16) ++ iret = ((__varword)((unsigned char *) list.raddr)[6]) ++ | ((__varword)((unsigned char *) list.raddr)[5] << 8) ++ | ((__varword)((unsigned char *) list.raddr)[4] << 16) + | ((__varword)((unsigned char *) list.raddr)[3] << 24) +- | ((__varword)((unsigned char *) list.raddr)[4] << 32) +- | ((__varword)((unsigned char *) list.raddr)[5] << 40) +- | ((__varword)((unsigned char *) list.raddr)[6] << 48); ++ | ((__varword)((unsigned char *) list.raddr)[2] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[1] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 48); + } else + if (list.rsize >= 8 && list.rsize <= 16) { +- iret = ((__varword)((unsigned char *) list.raddr)[0]) +- | ((__varword)((unsigned char *) list.raddr)[1] << 8) +- | ((__varword)((unsigned char *) list.raddr)[2] << 16) +- | ((__varword)((unsigned char *) list.raddr)[3] << 24) +- | ((__varword)((unsigned char *) list.raddr)[4] << 32) +- | ((__varword)((unsigned char *) list.raddr)[5] << 40) +- | ((__varword)((unsigned char *) list.raddr)[6] << 48) +- | ((__varword)((unsigned char *) list.raddr)[7] << 56); ++ iret = ((__varword)((unsigned char *) list.raddr)[7]) ++ | ((__varword)((unsigned char *) list.raddr)[6] << 8) ++ | ((__varword)((unsigned char *) list.raddr)[5] << 16) ++ | ((__varword)((unsigned char *) list.raddr)[4] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[3] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[2] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[1] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[0] << 56); + if (list.rsize == 8) { + } else + if (list.rsize == 9) { +- iret2 = (__varword)((unsigned char *) list.raddr)[8]; ++ iret2 = (__varword)((unsigned char *) list.raddr)[8] << 56; + } else + if (list.rsize == 10) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48); + } else + if (list.rsize == 11) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40); + } else + if (list.rsize == 12) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16) +- | ((__varword)((unsigned char *) list.raddr)[11] << 24); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[11] << 32); + } else + if (list.rsize == 13) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16) +- | ((__varword)((unsigned char *) list.raddr)[11] << 24) +- | ((__varword)((unsigned char *) list.raddr)[12] << 32); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[12] << 24); + } else + if (list.rsize == 14) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16) +- | ((__varword)((unsigned char *) list.raddr)[11] << 24) +- | ((__varword)((unsigned char *) list.raddr)[12] << 32) +- | ((__varword)((unsigned char *) list.raddr)[13] << 40); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[13] << 16); + } else + if (list.rsize == 15) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16) +- | ((__varword)((unsigned char *) list.raddr)[11] << 24) +- | ((__varword)((unsigned char *) list.raddr)[12] << 32) +- | ((__varword)((unsigned char *) list.raddr)[13] << 40) +- | ((__varword)((unsigned char *) list.raddr)[14] << 48); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[13] << 16) ++ | ((__varword)((unsigned char *) list.raddr)[14] << 8); + } else + if (list.rsize == 16) { +- iret2 = ((__varword)((unsigned char *) list.raddr)[8]) +- | ((__varword)((unsigned char *) list.raddr)[9] << 8) +- | ((__varword)((unsigned char *) list.raddr)[10] << 16) +- | ((__varword)((unsigned char *) list.raddr)[11] << 24) +- | ((__varword)((unsigned char *) list.raddr)[12] << 32) +- | ((__varword)((unsigned char *) list.raddr)[13] << 40) +- | ((__varword)((unsigned char *) list.raddr)[14] << 48) +- | ((__varword)((unsigned char *) list.raddr)[15] << 56); ++ iret2 = ((__varword)((unsigned char *) list.raddr)[8] << 56) ++ | ((__varword)((unsigned char *) list.raddr)[9] << 48) ++ | ((__varword)((unsigned char *) list.raddr)[10] << 40) ++ | ((__varword)((unsigned char *) list.raddr)[11] << 32) ++ | ((__varword)((unsigned char *) list.raddr)[12] << 24) ++ | ((__varword)((unsigned char *) list.raddr)[13] << 16) ++ | ((__varword)((unsigned char *) list.raddr)[14] << 8) ++ | ((__varword)((unsigned char *) list.raddr)[15]); + } + } + #else /* Optimized: fewer conditional jumps, fewer memory accesses */ +--- a/callback/vacall_r/vacall-powerpc64-elfv2-linux.S ++++ b/callback/vacall_r/vacall-powerpc64-elfv2-linux.S @@ -1,45 +1,56 @@ .file "vacall-powerpc64.c" - .machine power4 diff --git a/srcpkgs/ffcall/template b/srcpkgs/ffcall/template index 60d5f398a6c..95072122df5 100644 --- a/srcpkgs/ffcall/template +++ b/srcpkgs/ffcall/template @@ -1,6 +1,6 @@ # Template file for 'ffcall' pkgname=ffcall -version=2.2 +version=2.4 revision=1 wrksrc="libffcall-${version}" build_style=gnu-configure @@ -9,7 +9,7 @@ maintainer="Martin Riese " license="GPL-2.0-or-later" homepage="https://www.gnu.org/software/libffcall" distfiles="${GNU_SITE}/libffcall/libffcall-${version}.tar.gz" -checksum=ebfa37f97b6c94fac24ecf3193f9fc829517cf81aee9ac2d191af993d73cb747 +checksum=8ef69921dbdc06bc5bb90513622637a7b83a71f31f5ba377be9d8fd8f57912c2 # won't work with parallel_build so just turn it off (thanks to JuanRP for the Hint) disable_parallel_build=yes @@ -41,6 +41,7 @@ do_install() { } ffcall-devel_package() { + depends="${sourcepkg}>=${version}_${revision}" short_desc+=" - development files" pkg_install() { vmove usr/include