On Thu, Sep 24, 2015 at 5:57 AM, Jiri Olsa <[email protected]> wrote: > > On Thu, Sep 24, 2015 at 05:41:58PM +0530, Naveen N. Rao wrote: > > perf build currently fails on powerpc: > > > > LINK perf > > libperf.a(libperf-in.o):(.toc+0x120): undefined reference to > > `sample_reg_masks' > > libperf.a(libperf-in.o):(.toc+0x130): undefined reference to > > `sample_reg_masks' > > collect2: error: ld returned 1 exit status > > make[1]: *** [perf] Error 1 > > make: *** [all] Error 2 > > > > This is due to parse-regs-options.c using sample_reg_masks, which is > > defined only with CONFIG_PERF_REGS. > > > > In addition, perf record -I is only useful if the arch supports > > PERF_REGS. Hence, let's expose -I conditionally. > > > > Signed-off-by: Naveen N. Rao <[email protected]> > > hum, I wonder why we have sample_reg_masks defined as weak in util/perf_regs.c > which is also built only via CONFIG_PERF_REGS > > I wonder we could get rid of the weak definition via attached patch, Stephane? > But the whole point of having it weak is to avoid this error scenario on any arch without support and avoid ugly #ifdef HAVE_ in generic files.
if perf_regs.c is compiled on PPC, then why do we get the undefined? > > > anyway this looks ok > > Acked-by: Jiri Olsa <[email protected]> > > thanks, > jirka > > > --- > diff --git a/tools/perf/arch/x86/util/Build b/tools/perf/arch/x86/util/Build > index ff63649fa9ac..e5627b3d1bb8 100644 > --- a/tools/perf/arch/x86/util/Build > +++ b/tools/perf/arch/x86/util/Build > @@ -2,7 +2,7 @@ libperf-y += header.o > libperf-y += tsc.o > libperf-y += pmu.o > libperf-y += kvm-stat.o > -libperf-y += perf_regs.o > +libperf-$(CONFIG_PERF_REGS) += perf_regs.o > > libperf-$(CONFIG_DWARF) += dwarf-regs.o > > diff --git a/tools/perf/util/perf_regs.c b/tools/perf/util/perf_regs.c > index 885e8ac83997..43168fb0d9a2 100644 > --- a/tools/perf/util/perf_regs.c > +++ b/tools/perf/util/perf_regs.c > @@ -2,10 +2,6 @@ > #include "perf_regs.h" > #include "event.h" > > -const struct sample_reg __weak sample_reg_masks[] = { > - SMPL_REG_END > -}; > - > int perf_reg_value(u64 *valp, struct regs_dump *regs, int id) > { > int i, idx = 0; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

