That's excellent ! Thanks, Paul
On 02/14/2014 03:23 PM, Alexander Monakov wrote: > > On Fri, 14 Feb 2014, Paul Woegerer wrote: > >> As explained by Alexander Monakov, dlsym() is defined to be pure, thus the >> compiler is allowed to assume that there is no need to write the changes >> performed by setup_static_allocator() into memory prior to calling dlsym(). >> The added cmm_barrier() forces the compiler to write the changes into memory. >> >> For more details refer to: >> http://lists.lttng.org/pipermail/lttng-dev/2014-February/022389.html > If everyone here agrees that this is a workaround for a glibc bug, please add > a note to that effect in the patch and please notify glibc upstream (again). > > FWIW, when toying with a similar code I implemented a different workaround > along the lines of > > #define dlsym glibc_dlsym_proto_lies_about_leafness > #include <dlfcn.h> > #undef dlsym > > extern void *dlsym(void *, const char *); > > > Thus avoiding the need to sprinkle unneeded compiler memory barriers in code. > > HTH > Alexander -- Paul Woegerer, SW Development Engineer Sourcery Analyzer <http://go.mentor.com/sourceryanalyzer> Mentor Graphics, Embedded Software Division _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev