diff mbox

[v2] tools: perf: fix linker error when libelf config is disabled

Message ID 1483545363-11393-1-git-send-email-sudeep.holla@arm.com
State Superseded
Headers show

Commit Message

Sudeep Holla Jan. 4, 2017, 3:56 p.m. UTC
When libelf is disabled in the configuration, we get the following
linker error:
  LINK     libperf-jvmti.so
  ld: cannot find -lelf
  Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

Jiri pointed out that both librt and libelf are not really required. So
this patch fixes the linker error by getting rid of unwanted libraries
in the linker stage.

Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

---
 tools/perf/Makefile.perf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

v1->v2:
	- Dropped libelf and librt as they are not required

--
2.7.4

Comments

Jiri Olsa Jan. 4, 2017, 4:06 p.m. UTC | #1
On Wed, Jan 04, 2017 at 03:56:03PM +0000, Sudeep Holla wrote:
> When libelf is disabled in the configuration, we get the following

> linker error:

>   LINK     libperf-jvmti.so

>   ld: cannot find -lelf

>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

> 

> Jiri pointed out that both librt and libelf are not really required. So

> this patch fixes the linker error by getting rid of unwanted libraries

> in the linker stage.

> 

> Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")


hum, AFAICS it linked -lelf and -lrt even before right? ;-)

jirka
Sudeep Holla Jan. 4, 2017, 4:08 p.m. UTC | #2
On 04/01/17 16:06, Jiri Olsa wrote:
> On Wed, Jan 04, 2017 at 03:56:03PM +0000, Sudeep Holla wrote:

>> When libelf is disabled in the configuration, we get the following

>> linker error:

>>   LINK     libperf-jvmti.so

>>   ld: cannot find -lelf

>>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

>>

>> Jiri pointed out that both librt and libelf are not really required. So

>> this patch fixes the linker error by getting rid of unwanted libraries

>> in the linker stage.

>>

>> Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")

> 

> hum, AFAICS it linked -lelf and -lrt even before right? ;-)

> 


Yes, sorry I forgot to remove that and trace it back the actual commit.

-- 
Regards,
Sudeep
Sudeep Holla Jan. 4, 2017, 4:18 p.m. UTC | #3
On 04/01/17 16:08, Sudeep Holla wrote:
> 

> 

> On 04/01/17 16:06, Jiri Olsa wrote:

>> On Wed, Jan 04, 2017 at 03:56:03PM +0000, Sudeep Holla wrote:

>>> When libelf is disabled in the configuration, we get the following

>>> linker error:

>>>   LINK     libperf-jvmti.so

>>>   ld: cannot find -lelf

>>>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

>>>

>>> Jiri pointed out that both librt and libelf are not really required. So

>>> this patch fixes the linker error by getting rid of unwanted libraries

>>> in the linker stage.

>>>

>>> Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")

>>

>> hum, AFAICS it linked -lelf and -lrt even before right? ;-)

>>

> 

> Yes, sorry I forgot to remove that and trace it back the actual commit.

> 


Having looked at it again, it looks new additions in the above commit.
It may be a copied from somewhere else but I can't trace it back :(.
I need your help if you want to get rid of that ;)

-- 
Regards,
Sudeep
Jiri Olsa Jan. 4, 2017, 5:19 p.m. UTC | #4
On Wed, Jan 04, 2017 at 04:18:10PM +0000, Sudeep Holla wrote:
> 

> 

> On 04/01/17 16:08, Sudeep Holla wrote:

> > 

> > 

> > On 04/01/17 16:06, Jiri Olsa wrote:

> >> On Wed, Jan 04, 2017 at 03:56:03PM +0000, Sudeep Holla wrote:

> >>> When libelf is disabled in the configuration, we get the following

> >>> linker error:

> >>>   LINK     libperf-jvmti.so

> >>>   ld: cannot find -lelf

> >>>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

> >>>

> >>> Jiri pointed out that both librt and libelf are not really required. So

> >>> this patch fixes the linker error by getting rid of unwanted libraries

> >>> in the linker stage.

> >>>

> >>> Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")

> >>

> >> hum, AFAICS it linked -lelf and -lrt even before right? ;-)

> >>

> > 

> > Yes, sorry I forgot to remove that and trace it back the actual commit.

> > 

> 

> Having looked at it again, it looks new additions in the above commit.

> It may be a copied from somewhere else but I can't trace it back :(.

> I need your help if you want to get rid of that ;)


I think it's this one:
  209045adc2bb perf tools: add JVMTI agent library

jirka
Sudeep Holla Jan. 4, 2017, 5:26 p.m. UTC | #5
On 04/01/17 17:19, Jiri Olsa wrote:
> On Wed, Jan 04, 2017 at 04:18:10PM +0000, Sudeep Holla wrote:

>>

>>

>> On 04/01/17 16:08, Sudeep Holla wrote:

>>>

>>>

>>> On 04/01/17 16:06, Jiri Olsa wrote:

>>>> On Wed, Jan 04, 2017 at 03:56:03PM +0000, Sudeep Holla wrote:

>>>>> When libelf is disabled in the configuration, we get the following

>>>>> linker error:

>>>>>   LINK     libperf-jvmti.so

>>>>>   ld: cannot find -lelf

>>>>>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

>>>>>

>>>>> Jiri pointed out that both librt and libelf are not really required. So

>>>>> this patch fixes the linker error by getting rid of unwanted libraries

>>>>> in the linker stage.

>>>>>

>>>>> Fixes: d4dfdf00d43e ("perf jvmti: Plug compilation into perf build")

>>>>

>>>> hum, AFAICS it linked -lelf and -lrt even before right? ;-)

>>>>

>>>

>>> Yes, sorry I forgot to remove that and trace it back the actual commit.

>>>

>>

>> Having looked at it again, it looks new additions in the above commit.

>> It may be a copied from somewhere else but I can't trace it back :(.

>> I need your help if you want to get rid of that ;)

> 

> I think it's this one:

>   209045adc2bb perf tools: add JVMTI agent library


Thanks for that, I would never have figured this out myself. Will fix
that and send out v3.

-- 
Regards,
Sudeep
Jiri Olsa Jan. 4, 2017, 5:35 p.m. UTC | #6
On Wed, Jan 04, 2017 at 05:30:02PM +0000, Sudeep Holla wrote:
> When libelf is disabled in the configuration, we get the following

> linker error:

>   LINK     libperf-jvmti.so

>   ld: cannot find -lelf

>   Makefile.perf:515: recipe for target 'libperf-jvmti.so' failed

> 

> Jiri pointed out that both librt and libelf are not really required. So

> this patch fixes the linker error by getting rid of unwanted libraries

> in the linker stage.

> 

> Fixes: 209045adc2bb ("perf tools: add JVMTI agent library")

> Cc: Peter Zijlstra <peterz@infradead.org>

> Cc: Ingo Molnar <mingo@redhat.com>

> Cc: Jiri Olsa <jolsa@kernel.org>

> Cc: Stephane Eranian <eranian@google.com>

> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>


Acked-by: Jiri Olsa <jolsa@kernel.org>


thanks,
jirka
diff mbox

Patch

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 8fc24824705e..9e4a7ea84637 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -512,7 +512,7 @@  $(LIBJVMTI_IN): FORCE
 	$(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=jvmti obj=jvmti

 $(OUTPUT)$(LIBJVMTI): $(LIBJVMTI_IN)
-	$(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $< -lelf -lrt
+	$(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $<
 endif

 $(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)