| From a41c322f4c6863ebfeba1740f6f3afbc0f8c71e9 Mon Sep 17 00:00:00 2001 |
| From: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com> |
| Date: Mon, 22 Dec 2014 22:08:33 -0200 |
| Subject: [PATCH] Fix build errors in mono-context.c on ppc64el |
| |
| Build error #1: |
| |
| libtool: compile: gcc <...> -c mono-context.c -fPIC -DPIC -o .libs/mono-context.o |
| mono-context.c: In function 'mono_sigctx_to_monoctx': |
| mono-context.c:435:68: error: 'MONO_SAVED_GREGS' undeclared (first use in this function) |
| memcpy (&mctx->regs, &UCONTEXT_REG_Rn(uc, 13), sizeof (mgreg_t) * MONO_SAVED_GREGS); |
| ^ |
| mono-context.c:435:68: note: each undeclared identifier is reported only once for each function it appears in |
| mono-context.c:436:70: error: 'MONO_SAVED_FREGS' undeclared (first use in this function) |
| memcpy (&mctx->fregs, &UCONTEXT_REG_FPRn(uc, 14), sizeof (double) * MONO_SAVED_FREGS); |
| ^ |
| The MONO_SAVED_GREGS and MONO_SAVED_FREGS macros are defined in mini-ppc.h. |
| The problem happens because commit 7e056cd346ccab104715e19d51d0ceccd51b696d |
| moved code using them from exceptions-ppc.h (which includes mini-ppc.h) to |
| mono-context.c (which doesn't), where they're not #included. |
| |
| So, include mini-ppc.h in mono-context.c (in the existing powerpc ifdef block). |
| |
| Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com> |
| |
| Build error #2: |
| |
| Now, it turns out mini-ppc.h doesn't know MonoMethod, MonoMethodSignature, and MonoObject. |
| So, include object.h (MonoObject), which includes metadata.h (MonoMethod and MonoMethodSignature), |
| in mini-ppc.h. |
| |
| libtool: compile: gcc <...> -c mono-context.c -fPIC -DPIC -o .libs/mono-context.o |
| In file included from mono-context.c:427:0: |
| ../../mono/mini/mini-ppc.h:37:2: error: unknown type name 'MonoMethod' |
| MonoMethod *method; |
| ^ |
| ../../mono/mini/mini-ppc.h:306:31: error: unknown type name 'MonoMethodSignature' |
| mono_ppc_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL; |
| ^ |
| ../../mono/mini/mini-ppc.h:306:64: error: unknown type name 'MonoMethodSignature' |
| mono_ppc_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL; |
| ^ |
| ../../mono/mini/mini-ppc.h:312:27: error: unknown type name 'MonoObject' |
| mono_ppc_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, mgreg_t *int_regs, gdouble *fp_regs, gboolean rethrow) MONO_INTERNAL; |
| ^ |
| |
| Backported from upstream commit |
| 55fa0a561acda220f1b363e4507cb1c3a62795a7 by Thomas Petazzoni |
| <thomas.petazzoni@free-electrons.com>. |
| |
| Signed-off-by: Mauricio Faria de Oliveira <mauricfo@linux.vnet.ibm.com> |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| --- |
| mono/mini/mini-ppc.h | 1 + |
| mono/utils/mono-context.c | 1 + |
| 2 files changed, 2 insertions(+) |
| |
| diff --git a/mono/mini/mini-ppc.h b/mono/mini/mini-ppc.h |
| index 4b39b7a..cbf73bb 100644 |
| --- a/mono/mini/mini-ppc.h |
| +++ b/mono/mini/mini-ppc.h |
| @@ -4,6 +4,7 @@ |
| #include <mono/arch/ppc/ppc-codegen.h> |
| #include <mono/utils/mono-sigcontext.h> |
| #include <mono/utils/mono-context.h> |
| +#include <mono/metadata/object.h> |
| #include <glib.h> |
| |
| #ifdef __mono_ppc64__ |
| diff --git a/mono/utils/mono-context.c b/mono/utils/mono-context.c |
| index 689bf86..0db9dce 100644 |
| --- a/mono/utils/mono-context.c |
| +++ b/mono/utils/mono-context.c |
| @@ -424,6 +424,7 @@ mono_monoctx_to_sigctx (MonoContext *mctx, void *sigctx) |
| #elif (((defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__)) && !defined(MONO_CROSS_COMPILE))) || (defined(TARGET_POWERPC)) |
| |
| #include <mono/utils/mono-context.h> |
| +#include <mono/mini/mini-ppc.h> |
| |
| void |
| mono_sigctx_to_monoctx (void *sigctx, MonoContext *mctx) |
| -- |
| 2.1.0 |
| |