On Tue, May 24, 2016 at 8:09 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > On Tue, May 24, 2016 at 9:06 AM, Rob Herring <r...@kernel.org> wrote: >> On Tue, May 24, 2016 at 4:57 AM, Emil Velikov <emil.l.veli...@gmail.com> >> wrote: >>> 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 >> >> Doesn't this need to get defined somewhere? > > See m4/ax_gcc_func_attribute.m4.
Right, but then don't we need "AX_GCC_FUNC_ATTRIBUTE([weak])" added in configure.ac? Only the following are checked: configure.ac:AX_GCC_FUNC_ATTRIBUTE([const]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([flatten]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([format]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([malloc]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([packed]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([pure]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([returns_nonnull]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([unused]) configure.ac:AX_GCC_FUNC_ATTRIBUTE([warn_unused_result]) Rob _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev