On Tue, May 24, 2016 at 8:40 AM, Rob Clark <[email protected]> wrote: > On Tue, May 24, 2016 at 9:17 AM, Ilia Mirkin <[email protected]> wrote: >> On Tue, May 24, 2016 at 9:15 AM, Rob Herring <[email protected]> wrote: >>> On Tue, May 24, 2016 at 8:09 AM, Ilia Mirkin <[email protected]> wrote: >>>> On Tue, May 24, 2016 at 9:06 AM, Rob Herring <[email protected]> wrote: >>>>> On Tue, May 24, 2016 at 4:57 AM, Emil Velikov <[email protected]> >>>>> wrote: >>>>>> From: Emil Velikov <[email protected]> >>>>>> >>>>>> 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 <[email protected]> >>>>>> Cc: Ben Widawsky <[email protected]> >>>>>> Cc: Ilia Mirkin <[email protected]> >>>>>> Cc: Mark Janes <[email protected]> >>>>>> Cc: Rob Clark <[email protected]> >>>>>> Cc: Rob Herring <[email protected]> >>>>>> Signed-off-by: Emil Velikov <[email protected]> >>>>>> --- >>>>>> 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]) >> >> Right :) Since Emil says he tested, must be some sort of error in his >> testing procedure. Or he forgot to commit that file. > > hmm, even with the below hunk added, it isn't working for me.. I > suspect Emil might need to double check his generated Makefiles to be > sure they have -O0..
Strange. It fails for me so I have -O0, and I can add the weak attribs w/o the ifdef and it works. Rob _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
