gint32 stack_alloc_size;
gboolean omit_fp, omit_fp_computed;
gpointer cinfo;
+ gint32 async_point_count;
} MonoCompileArch;
typedef struct {
#else
+/*
+ * __builtin_frame_address () is broken on some older gcc versions in the presence of
+ * frame pointer elimination, see bug #82095.
+ */
#define MONO_INIT_CONTEXT_FROM_FUNC(ctx,start_func) do { \
+ int tmp; \
+ guint64 stackptr = (guint64)&tmp; \
mono_arch_flush_register_windows (); \
MONO_CONTEXT_SET_IP ((ctx), (start_func)); \
- MONO_CONTEXT_SET_BP ((ctx), __builtin_frame_address (0)); \
- MONO_CONTEXT_SET_SP ((ctx), __builtin_frame_address (0)); \
+ MONO_CONTEXT_SET_BP ((ctx), stackptr); \
+ MONO_CONTEXT_SET_SP ((ctx), stackptr); \
} while (0)
#endif
#define MONO_ARCH_HAVE_CREATE_VARS 1
#define MONO_ARCH_HAVE_IMT 1
#define MONO_ARCH_IMT_REG AMD64_R11
+#define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1
#define MONO_ARCH_AOT_SUPPORTED 1
gboolean
-mono_amd64_is_sse2 (void);
+mono_amd64_is_sse2 (void) MONO_INTERNAL;
+
+void
+mono_amd64_patch (unsigned char* code, gpointer target) MONO_INTERNAL;
#endif /* __MONO_MINI_AMD64_H__ */