From: Emil Velikov <emil.veli...@collabora.com> Add weak symbol notation for the pthread_mutexattr* symbols, thus making the linker happy. When building with -O1 or greater the optimiser will kick in and remove the said functions as they are dead/unreachable code.
Ideally we'll enable the optimisations locally, yet that does not seem to work atm. Cc: Alejandro PiƱeiro <apinhe...@igalia.com> Cc: Ben Widawsky <b...@bwidawsk.net> Cc: Ilia Mirkin <imir...@alum.mit.edu> Cc: Mark Janes <mark.a.ja...@intel.com> Cc: Rob Clark <robdcl...@gmail.com> Cc: Rob Herring <r...@kernel.org> Signed-off-by: Emil Velikov <emil.veli...@collabora.com> --- Building with -Wall -Wextra -pedantic and it does not cause any additional warnings/errors. --- include/c11/threads_posix.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/include/c11/threads_posix.h b/include/c11/threads_posix.h index 11d36e4..61b7fab 100644 --- a/include/c11/threads_posix.h +++ b/include/c11/threads_posix.h @@ -169,6 +169,32 @@ mtx_destroy(mtx_t *mtx) pthread_mutex_destroy(mtx); } +/* + * XXX: Workaround when building with -O0 and without pthreads link. + * + * In such cases constant folding and dead code elimination won't be + * available, thus the compiler will always add the pthread_mutexattr* + * functions into the binary. As we try to link, we'll fail as the + * symbols are unresolved. + * + * Ideally we'll enable the optimisations locally, yet that does not + * seem to work. + * + * So the alternative workaround is to annotate the symbols as weak. + * Thus the linker will be happy and things don't clash when building + * with -O1 or greater. + */ +#ifdef HAVE_FUNC_ATTRIBUTE_WEAK +__attribute__((weak)) +int pthread_mutexattr_init(pthread_mutexattr_t *attr); + +__attribute__((weak)) +int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type); + +__attribute__((weak)) +int pthread_mutexattr_destroy(pthread_mutexattr_t *attr); +#endif + // 7.25.4.2 static inline int mtx_init(mtx_t *mtx, int type) -- 2.8.2 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev