summaryrefslogtreecommitdiff
path: root/mono/mini/trace.c
diff options
context:
space:
mode:
Diffstat (limited to 'mono/mini/trace.c')
-rw-r--r--mono/mini/trace.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/mono/mini/trace.c b/mono/mini/trace.c
index f67b704c36..551b2a2fda 100644
--- a/mono/mini/trace.c
+++ b/mono/mini/trace.c
@@ -31,6 +31,8 @@
# define fprintf(__ignore, ...) g_log ("mono-gc", G_LOG_LEVEL_MESSAGE, __VA_ARGS__)
#endif
+#define RETURN_ADDRESS(N) (__builtin_extract_return_addr (__builtin_return_address (N)))
+
static MonoTraceSpec trace_spec;
gboolean
@@ -401,7 +403,7 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
g_free (fname);
if (!ebp) {
- printf (") ip: %p\n", __builtin_return_address (1));
+ printf (") ip: %p\n", RETURN_ADDRESS (1));
return;
}
@@ -411,7 +413,7 @@ mono_trace_enter_method (MonoMethod *method, char *ebp)
if (method->is_inflated) {
/* FIXME: Might be better to pass the ji itself */
- MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), __builtin_return_address (0), NULL);
+ MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (0), NULL);
if (ji) {
gsctx = mono_jit_info_get_generic_sharing_context (ji);
if (gsctx && (gsctx->var_is_vt || gsctx->mvar_is_vt)) {
@@ -569,7 +571,7 @@ mono_trace_leave_method (MonoMethod *method, ...)
if (method->is_inflated) {
/* FIXME: Might be better to pass the ji itself */
- MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), __builtin_return_address (0), NULL);
+ MonoJitInfo *ji = mini_jit_info_table_find (mono_domain_get (), RETURN_ADDRESS (0), NULL);
if (ji) {
gsctx = mono_jit_info_get_generic_sharing_context (ji);
if (gsctx && (gsctx->var_is_vt || gsctx->mvar_is_vt)) {
@@ -682,7 +684,7 @@ handle_enum:
printf ("(unknown return type %x)", mono_method_signature (method)->ret->type);
}
- //printf (" ip: %p\n", __builtin_return_address (1));
+ //printf (" ip: %p\n", RETURN_ADDRESS (1));
printf ("\n");
fflush (stdout);
}