git: b5a6298f4d46 - main - lang/mono: fix build with clang 15

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 18 Dec 2022 17:43:49 UTC
The branch main has been updated by dim (src committer):

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

commit b5a6298f4d4643abb129962934fcefc4a832eb80
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2022-12-11 22:12:36 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-12-18 17:33:30 +0000

    lang/mono: fix build with clang 15
    
    During an exp-run for llvm 15 (see bug 265425), it turned out that
    lang/mono failed to build with clang 15, on i386:
    
      mini-runtime.c:806:24: error: incompatible pointer to integer conversion assigning to 'guint32' (aka 'unsigned int') from 'MonoLMF *' (aka 'struct MonoLMF *') [-Wint-conversion]
              ext->lmf.previous_lmf = *lmf_addr;
                                    ^ ~~~~~~~~~
      mini-runtime.c:808:24: error: incompatible pointer to integer conversion assigning to 'guint32' (aka 'unsigned int') from 'gpointer' (aka 'void *') [-Wint-conversion]
              ext->lmf.previous_lmf = (gpointer)(((gssize)ext->lmf.previous_lmf) | 2);
                                    ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    As noted, this is because on i386 the previous_lmf field is declared as
    guint32, while other architectures use gpointer.
    
    Upstream changed the field to gpointer in
    <https://github.com/mono/mono/pull/8308/commits/1c43a8476b5>, which got
    merged into main in <https://github.com/mono/mono/commit/384c4a4e2ea>.
    
    PR:             268321
    Approved by:    portmgr (tcberner)
    MFH:            2022Q4
---
 lang/mono/files/patch-mono_mini_mini-x86.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/lang/mono/files/patch-mono_mini_mini-x86.h b/lang/mono/files/patch-mono_mini_mini-x86.h
new file mode 100644
index 000000000000..d804a58edb74
--- /dev/null
+++ b/lang/mono/files/patch-mono_mini_mini-x86.h
@@ -0,0 +1,11 @@
+--- mono/mini/mini-x86.h.orig	2018-08-24 15:17:13 UTC
++++ mono/mini/mini-x86.h
+@@ -139,7 +139,7 @@ struct MonoLMF {
+ 	 * If the second lowest bit is set to 1, then this is a MonoLMFExt structure, and
+ 	 * the other fields are not valid.
+ 	 */
+-	guint32    previous_lmf;
++	gpointer    previous_lmf;
+ 	gpointer    lmf_addr;
+ 	/* Only set in trampoline LMF frames */
+ 	MonoMethod *method;