Em Sun, Sep 29, 2019 at 11:05:14PM +0200, Jiri Olsa escreveu: > On Fri, Sep 27, 2019 at 02:43:41PM -0700, Ian Rogers wrote: > > Being const + weak breaks with some compilers that constant-propagate > > from the weak symbol. This behavior is outside of the specification, but > > in LLVM is chosen to match GCC's behavior. > > > > LLVM's implementation was set in this patch: > > https://github.com/llvm/llvm-project/commit/f49573d1eedcf1e44893d5a062ac1b72c8419646 > > A const + weak symbol is set to be weak_odr: > > https://llvm.org/docs/LangRef.html > > ODR is one definition rule, and given there is one constant definition > > constant-propagation is possible. It is possible to get this code to > > miscompile with LLVM when applying link time optimization. As compilers > > become more aggressive, this is likely to break in more instances. > > > > Move the definition of sample_reg_masks to the conditional part of > > perf_regs.h and guard usage with HAVE_PERF_REGS_SUPPORT. This avoids the > > weak symbol. > > > > Fix an issue when HAVE_PERF_REGS_SUPPORT isn't defined from patch v1. > > > > Signed-off-by: Ian Rogers <irog...@google.com> > > Acked-by: Jiri Olsa <jo...@kernel.org>
Thanks, applied. - Arnaldo