Re: perf jvmti: unconditionally links against -lelf

From: Alexey Brodkin
Date: Wed Apr 12 2017 - 07:52:52 EST


Hi Jiri,

On Wed, 2017-04-12 at 12:19 +0200, Jiri Olsa wrote:
> On Wed, Apr 12, 2017 at 09:58:26AM +0000, Alexey Brodkin wrote:
> >
> > Hi Jiri,
> >
> > Just tried to cross-compile perf with pretty bare-minimal toolchain
> > which has no libelf installed for the target (for the record I used
> > SNPS ARC pre-built arc-2016.09 tools) like that:
> > --------------->8------------
> > make NO_LIBELF=1
> > --------------->8------------
> >
> > And got the following build failure:
> > --------------->8------------
> > Â LINKÂÂÂÂÂlibperf-jvmti.so
> > .../2016.09-uclibc-archs/bin/../lib/gcc/arc-snps-linux-uclibc/6.2.1/../../../../arc-snps-linux-uclibc/bin/ld: cannot find -lelf
> > --------------->8------------
> >
> > First I was surprised because I intentionally disabled usage of libelf
> > but after some grepping figured out jvmti is linked against libelf
> > regardless any settings, see:
> > --------------->8------------
> > $(OUTPUT)$(LIBJVMTI): $(LIBJVMTI_IN)
> > Â Â Â Â$(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $< -lelf -lrt
> > endif
> > --------------->8------------
> >
> > This comes from commitÂd4dfdf00d43e ("perf jvmti: Plug compilation into perf build").
> >
> > I'm not really sure what could be the best solution to the problem I see.
> > If libelf is a real must for jvmti then probably we may force setÂNO_JVMTI=1
> > ifÂNO_LIBELF=1 is passed on the command line.
> >
> > At least the following builds perf for me without issues:
> > --------------->8------------
> > make NO_LIBELF=1 NO_JVMTI=1
> > --------------->8------------
>
> hi,
> incidently, David just posted patch for this ;-)

So good to know somebody has already fixed my problem :)
Thanks for letting me know!

-Alexey