X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Fhelper.h;h=a187b0e7327b2af0f3d39f1160182ad514317303;hb=94be38e8fd2d71397f79c0a368ba95678052e32d;hp=8aeb772875820e597c50281f90770a1753e936dd;hpb=35897f8b2d311b756b81657dad9c53ef1c0fad8a;p=lttng-ust.git diff --git a/include/helper.h b/include/helper.h index 8aeb7728..a187b0e7 100644 --- a/include/helper.h +++ b/include/helper.h @@ -21,7 +21,7 @@ #include -static inline +static inline __attribute__((always_inline)) void *zmalloc(size_t len) { return calloc(len, 1); @@ -41,4 +41,29 @@ void *zmalloc(size_t len) __min1 <= __min2 ? __min1: __min2; \ }) +#define LTTNG_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +/* + * 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. + */ +#if defined(__PPC__) && !defined(__PPC64__) +#define LTTNG_UST_CALLER_IP() NULL +#else /* #if defined(__PPC__) && !defined(__PPC64__) */ +#define LTTNG_UST_CALLER_IP() __builtin_return_address(0) +#endif /* #else #if defined(__PPC__) && !defined(__PPC64__) */ + +/* + * LTTNG_HIDDEN: set the hidden attribute for internal functions + * On Windows, symbols are local unless explicitly exported, + * see https://gcc.gnu.org/wiki/Visibility + */ +#if defined(_WIN32) || defined(__CYGWIN__) +#define LTTNG_HIDDEN +#else +#define LTTNG_HIDDEN __attribute__((visibility("hidden"))) +#endif + #endif /* _LTTNG_UST_HELPER_H */