diff --git a/devel/ocaml-opam/files/patch-src__ext_ocaml-patches_0002-powerpc64.patch b/devel/ocaml-opam/files/patch-src__ext_ocaml-patches_0002-powerpc64.patch new file mode 100644 index 000000000000..18d9e466fde8 --- /dev/null +++ b/devel/ocaml-opam/files/patch-src__ext_ocaml-patches_0002-powerpc64.patch @@ -0,0 +1,253 @@ +--- src_ext/ocaml-patches/0002-powerpc64.patch 2024-12-20 11:31:53 UTC ++++ src_ext/ocaml-patches/0002-powerpc64.patch +@@ -0,0 +1,250 @@ ++--- a/asmcomp/power/arch.ml.orig 2024-03-14 14:46:35.000000000 +0000 +++++ b/asmcomp/power/arch.ml ++@@ -28,7 +28,7 @@ ++ let abi = ++ match Config.model with ++ | "ppc" -> ELF32 ++- | "ppc64" -> ELF64v1 +++ | "ppc64" -> ELF64v2 ++ | "ppc64le" -> ELF64v2 ++ | _ -> assert false ++ ++--- a/runtime/caml/stack.h.orig 2024-03-14 14:46:35.000000000 +0000 +++++ b/runtime/caml/stack.h ++@@ -35,10 +35,10 @@ ++ #if defined(MODEL_ppc) ++ #define Saved_return_address(sp) *((intnat *)((sp) - 4)) ++ #define Callback_link(sp) ((struct caml_context *)((sp) + 16)) ++-#elif defined(MODEL_ppc64) +++#elif _CALL_ELF == 1 ++ #define Saved_return_address(sp) *((intnat *)((sp) + 16)) ++ #define Callback_link(sp) ((struct caml_context *)((sp) + (48 + 32))) ++-#elif defined(MODEL_ppc64le) +++#elif _CALL_ELF == 2 ++ #define Saved_return_address(sp) *((intnat *)((sp) + 16)) ++ #define Callback_link(sp) ((struct caml_context *)((sp) + (32 + 32))) ++ #else ++--- a/runtime/power.S.orig 2024-03-14 14:46:35.000000000 +0000 +++++ b/runtime/power.S ++@@ -13,7 +13,7 @@ ++ /* */ ++ /**************************************************************************/ ++ ++-#if defined(MODEL_ppc64le) +++#if _CALL_ELF == 2 ++ .abiversion 2 ++ #endif ++ ++@@ -27,7 +27,7 @@ ++ #define DOMAIN_STATE_PTR 30 ++ #define ALLOC_PTR 31 ++ ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ #define EITHER(a,b) b ++ #else ++ #define EITHER(a,b) a ++@@ -52,7 +52,7 @@ ++ #define CALLBACK_LINK_SIZE 16 ++ #define CALLBACK_LINK_OFFSET 0 ++ #endif ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ #define RESERVED_STACK 48 ++ #define PARAM_SAVE_AREA (8*8) ++ #define LR_SAVE 16 ++@@ -64,7 +64,7 @@ ++ #define CALLBACK_LINK_SIZE 32 ++ #define CALLBACK_LINK_OFFSET 48 ++ #endif ++-#if defined(MODEL_ppc64le) +++#if _CALL_ELF == 2 ++ #define RESERVED_STACK 32 ++ #define PARAM_SAVE_AREA 0 ++ #define LR_SAVE 16 ++@@ -92,7 +92,7 @@ ++ ++ #endif ++ ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ #define FUNCTION(name) \ ++ .section ".opd","aw"; \ ++ .align 3; \ ++@@ -108,7 +108,7 @@ ++ ++ #endif ++ ++-#if defined(MODEL_ppc64le) +++#if _CALL_ELF == 2 ++ #define FUNCTION(name) \ ++ .section ".text"; \ ++ .globl name; \ ++@@ -133,7 +133,7 @@ ++ addi reg, reg, glob@l ++ #endif ++ ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ ++ #define LSYMB(glob) .L##glob ++ ++@@ -150,7 +150,7 @@ ++ ++ #define Caml_state(var) 8*domain_field_caml_##var(DOMAIN_STATE_PTR) ++ ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ .section ".opd","aw" ++ #else ++ .section ".text" ++@@ -237,7 +237,7 @@ ++ stfdu 31, 8(11) ++ /* Call the GC */ ++ bl caml_garbage_collection ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ nop ++ #endif ++ /* Reload new allocation pointer */ ++@@ -329,14 +329,14 @@ ++ #if defined(MODEL_ppc) ++ mtctr C_CALL_FUN ++ bctrl ++-#elif defined(MODEL_ppc64) +++#elif _CALL_ELF == 1 ++ ld 0, 0(C_CALL_FUN) ++ mr C_CALL_TOC, 2 /* save current TOC in a callee-save register */ ++ mtctr 0 ++ ld 2, 8(C_CALL_FUN) ++ bctrl ++ mr 2, C_CALL_TOC /* restore current TOC */ ++-#elif defined(MODEL_ppc64le) +++#elif _CALL_ELF == 2 ++ mtctr C_CALL_FUN ++ mr 12, C_CALL_FUN ++ mr C_CALL_TOC, 2 /* save current TOC in a callee-save register */ ++@@ -378,7 +378,7 @@ ++ addi 1, 1, -(PARAM_SAVE_AREA + RESERVED_STACK) ++ /* reserve stack space for C call */ ++ bl caml_stash_backtrace ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ nop ++ #endif ++ mr 3, 27 /* restore exn bucket */ ++@@ -414,7 +414,7 @@ ++ addi 1, 1, -(PARAM_SAVE_AREA + RESERVED_STACK) ++ /* reserve stack space for C call */ ++ bl caml_stash_backtrace ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ nop ++ #endif ++ mr 3, 27 /* restore exn bucket */ ++@@ -507,14 +507,14 @@ ++ #if defined(MODEL_ppc) ++ mtctr 12 ++ .L105: bctrl ++-#elif defined(MODEL_ppc64) +++#elif _CALL_ELF == 1 ++ ld 0, 0(12) ++ mtctr 0 ++ std 2, TOC_SAVE(1) ++ ld 2, 8(12) ++ .L105: bctrl ++ ld 2, TOC_SAVE(1) ++-#elif defined(MODEL_ppc64le) +++#elif _CALL_ELF == 2 ++ mtctr 12 ++ std 2, TOC_SAVE(1) ++ .L105: bctrl ++@@ -633,7 +633,7 @@ ++ b .L102 ++ ENDFUNCTION(caml_callback3_asm) ++ ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ .section ".opd","aw" ++ #else ++ .section ".text" ++@@ -655,7 +655,7 @@ ++ ++ /* TOC entries */ ++ ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ ++ .section ".toc", "aw" ++ ++--- a/testsuite/tools/asmgen_power.S.orig 2024-03-14 14:46:35.000000000 +0000 +++++ b/testsuite/tools/asmgen_power.S ++@@ -10,7 +10,7 @@ ++ /* */ ++ /*********************************************************************/ ++ ++-#if defined(MODEL_ppc64) || defined(MODEL_ppc64le) +++#if _CALL_ELF == 1 || _CALL_ELF == 2 ++ #define EITHER(a,b) b ++ #else ++ #define EITHER(a,b) a ++@@ -26,11 +26,11 @@ ++ #define RESERVED_STACK 16 ++ #define LR_SAVE_AREA 4 ++ #endif ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ #define RESERVED_STACK 48 ++ #define LR_SAVE_AREA 16 ++ #endif ++-#if defined(MODEL_ppc64le) +++#if _CALL_ELF == 2 ++ #define RESERVED_STACK 32 ++ #define LR_SAVE_AREA 16 ++ #endif ++@@ -46,7 +46,7 @@ ++ name: ++ #endif ++ ++-#if defined(MODEL_ppc64) +++#if _CALL_ELF == 1 ++ #define FUNCTION(name) \ ++ .section ".opd","aw"; \ ++ .align 3; \ ++@@ -58,7 +58,7 @@ ++ .L.name: ++ #endif ++ ++-#if defined(MODEL_ppc64le) +++#if _CALL_ELF == 2 ++ #define FUNCTION(name) \ ++ .section ".text"; \ ++ .globl name; \ ++@@ -118,11 +118,11 @@ ++ /* Get function pointer in CTR */ ++ #if defined(MODEL_ppc) ++ mtctr 3 ++-#elif defined(MODEL_ppc64) +++#elif _CALL_ELF == 1 ++ ld 0, 0(3) ++ mtctr 0 ++ ld 2, 8(3) ++-#elif defined(MODEL_ppc64le) +++#elif _CALL_ELF == 2 ++ mtctr 3 ++ mr 12, 3 ++ #else ++@@ -184,11 +184,11 @@ ++ /* Jump to C function (address in r28) */ ++ #if defined(MODEL_ppc) ++ mtctr 28 ++-#elif defined(MODEL_ppc64) +++#elif _CALL_ELF == 1 ++ ld 0, 0(28) ++ mtctr 0 ++ ld 2, 8(28) ++-#elif defined(MODEL_ppc64le) +++#elif _CALL_ELF == 2 ++ mtctr 28 ++ mr 12, 28 ++ #else