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