0005-Fix-build-errors-in-mono-context.c-on-ppc64el.patch 3.8 KB

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