Some updates to make RISC-V buildable again. (mono/mono#17408)
authorAlex Rønne Petersen <alex@alexrp.com>
Fri, 18 Oct 2019 18:16:14 +0000 (20:16 +0200)
committermonojenkins <jo.shields+jenkins@xamarin.com>
Fri, 18 Oct 2019 18:16:14 +0000 (20:16 +0200)
Some updates to make RISC-V buildable again.

Also some updates to the toolchain setup documentation.

Commit migrated from https://github.com/mono/mono/commit/d44e0e80d73d59de204b5db881e3d8c6076b4cac

src/mono/configure.ac
src/mono/mono/mini/mini-riscv.h
src/mono/mono/mini/mini.c
src/mono/mono/utils/mono-context.c
src/mono/mono/utils/mono-sigcontext.h

index ee53553..1afcf0b 100644 (file)
@@ -702,6 +702,11 @@ case "$host" in
                have_sys_zlib=no
                zlib_msg="bundled zlib"
                ;;
+       # Use bundled zlib on RISC-V for now to make cross-compiling easier.
+       riscv*)
+               have_sys_zlib=no
+               zlib_msg="bundled zlib"
+               ;;
        *)
                AC_CHECK_HEADER(zlib.h, [have_sys_zlib=yes], [have_sys_zlib=no])
                if test x$have_sys_zlib = xyes; then
index 17c7045..fe0bf9e 100644 (file)
@@ -187,6 +187,7 @@ struct MonoLMF {
 #define MONO_ARCH_INIT_TOP_LMF_ENTRY(lmf)
 
 typedef struct {
+       guint8 *stack;
 } CallContext;
 
 enum {
index 5a8d9eb..4df4a68 100644 (file)
@@ -4316,7 +4316,6 @@ mini_get_cpu_features (MonoCompile* cfg)
 #endif
        }
 #endif
-       MonoCPUFeatures features_ = features;
 
        // apply parameters passed via -mattr
        features = (MonoCPUFeatures) (features | mono_cpu_features_enabled);
index 8dfc321..4db04ee 100644 (file)
@@ -578,8 +578,8 @@ mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
 #else
        ucontext_t *uctx = sigctx;
 
-       memcpy (&mctx->gregs, &uctx->uc_mcontext.gregs, sizeof (host_mgreg_t) * G_N_ELEMENTS (mctx->gregs));
-       memcpy (&mctx->fregs, &uctx->uc_mcontext.fpregs, sizeof (double) * G_N_ELEMENTS (mctx->fregs));
+       memcpy (&mctx->gregs, &uctx->uc_mcontext.__gregs, sizeof (host_mgreg_t) * G_N_ELEMENTS (mctx->gregs));
+       memcpy (&mctx->fregs, &uctx->uc_mcontext.__fpregs, sizeof (double) * G_N_ELEMENTS (mctx->fregs));
 #endif
 }
 
@@ -591,8 +591,8 @@ mono_monoctx_to_sigctx (MonoContext *mctx, void *sigctx)
 #else
        ucontext_t *uctx = sigctx;
 
-       memcpy (&uctx->uc_mcontext.gregs, &mctx->gregs, sizeof (host_mgreg_t) * G_N_ELEMENTS (mctx->gregs));
-       memcpy (&uctx->uc_mcontext.fpregs, &mctx->fregs, sizeof (double) * G_N_ELEMENTS (mctx->fregs));
+       memcpy (&uctx->uc_mcontext.__gregs, &mctx->gregs, sizeof (host_mgreg_t) * G_N_ELEMENTS (mctx->gregs));
+       memcpy (&uctx->uc_mcontext.__fpregs, &mctx->fregs, sizeof (double) * G_N_ELEMENTS (mctx->fregs));
 #endif
 }
 
index a46f413..254d7ab 100644 (file)
@@ -555,8 +555,8 @@ typedef struct ucontext
 
 #include <ucontext.h>
 
-#define UCONTEXT_GREGS(ctx) (((ucontext_t *) (ctx))->uc_mcontext.gregs)
-#define UCONTEXT_FREGS(ctx) (((ucontext_t *) (ctx))->uc_mcontext.fpregs)
+#define UCONTEXT_GREGS(ctx) (((ucontext_t *) (ctx))->uc_mcontext.__gregs)
+#define UCONTEXT_FREGS(ctx) (((ucontext_t *) (ctx))->uc_mcontext.__fpregs)
 #define UCONTEXT_REG_PC(ctx) (UCONTEXT_GREGS ((ctx)) [REG_PC])
 #define UCONTEXT_REG_BP(ctx) (UCONTEXT_GREGS ((ctx)) [REG_S0])
 #define UCONTEXT_REG_SP(ctx) (UCONTEXT_GREGS ((ctx)) [REG_SP])