git: d21a79dc9040 - main - devel/ocaml-opam: fix build on powerpc64 by copying patches from lang/ocaml

From: Piotr Kubaj <pkubaj_at_FreeBSD.org>
Date: Fri, 20 Dec 2024 12:05:30 UTC
The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=d21a79dc9040746093b4de606cff8aa755a00be3

commit d21a79dc9040746093b4de606cff8aa755a00be3
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2024-12-20 12:01:40 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2024-12-20 12:05:02 +0000

    devel/ocaml-opam: fix build on powerpc64 by copying patches from lang/ocaml
---
 ...tch-src__ext_ocaml-patches_0002-powerpc64.patch | 253 +++++++++++++++++++++
 1 file changed, 253 insertions(+)

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