From: Mathieu Desnoyers Date: Wed, 17 Feb 2016 23:18:17 +0000 (-0500) Subject: Fix: disable use of __builtin_return_address(0) on 32-bit PowerPC X-Git-Tag: v2.8.0-rc1~28 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=97904b41390563c6ad2134c522b5ba44ef1ae3b2;p=lttng-ust.git Fix: disable use of __builtin_return_address(0) on 32-bit PowerPC It causes stack corruption in the tracepoint event probes. Signed-off-by: Mathieu Desnoyers --- diff --git a/include/lttng/ust-tracepoint-event.h b/include/lttng/ust-tracepoint-event.h index f96239e0..2c037dca 100644 --- a/include/lttng/ust-tracepoint-event.h +++ b/include/lttng/ust-tracepoint-event.h @@ -642,11 +642,23 @@ size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \ #define _TP_SESSION_CHECK(session, csession) 1 #endif /* TP_SESSION_CHECK */ +/* + * Use of __builtin_return_address(0) sometimes seems to cause stack + * corruption on 32-bit PowerPC. Disable this feature on that + * architecture for now by always using the NULL value for the ip + * context. + */ #undef _TP_IP_PARAM #ifdef TP_IP_PARAM #define _TP_IP_PARAM(x) (x) #else /* TP_IP_PARAM */ + +#if defined(__PPC__) && !defined(__PPC64__) +#define _TP_IP_PARAM(x) NULL +#else /* #if defined(__PPC__) && !defined(__PPC64__) */ #define _TP_IP_PARAM(x) __builtin_return_address(0) +#endif /* #else #if defined(__PPC__) && !defined(__PPC64__) */ + #endif /* TP_IP_PARAM */ /*