diff options
Diffstat (limited to 'mono/mini/trace.c')
-rw-r--r-- | mono/mini/trace.c | 10 |
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); } |