* [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins
@ 2015-05-28 13:28 He Kuang
2015-05-28 13:28 ` [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file He Kuang
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: He Kuang @ 2015-05-28 13:28 UTC (permalink / raw)
To: acme, jolsa, mingo, a.p.zijlstra; +Cc: wangnan0, linux-kernel
Traceevent plugins need dynamic symbols exported from libtraceevent.a,
otherwise a dlopen error will occur during plugins loading.
This patch uses dynamic-list-file to export dynamic symbols which will
be used in plugins to perf executable.
The problem is covered up if feature-libpython is enabled, because
PYTHON_EMBED_LDOPTS contains '-Xlinker --export-dynamic' which adds all
symbols to the dynamic symbol table. So we should reproduce the problem
by setting NO_LIBPYTHON=1.
Before this patch:
(Prepare plugins)
$ ls /root/.traceevent/plugins/
plugin_sched_switch.so
plugin_function.so
...
$ perf record -e 'ftrace:function' ls
$ perf script
Warning: could not load plugin '/mnt/data/root/.traceevent/plugins/plugin_sched_switch.so'
/root/.traceevent/plugins/plugin_sched_switch.so: undefined symbol: pevent_unregister_event_handler
Warning: could not load plugin '/root/.traceevent/plugins/plugin_function.so'
/root/.traceevent/plugins/plugin_function.so: undefined symbol: warning
...
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff8118bc50 <-- ffffffff8118c5b3
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff818e2440 <-- ffffffff8118bc75
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff8106eee0 <-- ffffffff811212e2
After this patch:
$ perf record -e 'ftrace:function' ls
$ perf script
:1049 1049 [000] 9666.754487: ftrace:function: __set_task_comm
:1049 1049 [000] 9666.754487: ftrace:function: _raw_spin_lock
:1049 1049 [000] 9666.754487: ftrace:function: task_tgid_nr_ns
...
Signed-off-by: He Kuang <hekuang@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
---
tools/lib/traceevent/Makefile | 14 +++++++++++++-
tools/perf/Makefile.perf | 14 ++++++++++++--
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
index 8464039..6daaff6 100644
--- a/tools/lib/traceevent/Makefile
+++ b/tools/lib/traceevent/Makefile
@@ -23,6 +23,7 @@ endef
# Allow setting CC and AR, or setting CROSS_COMPILE as a prefix.
$(call allow-override,CC,$(CROSS_COMPILE)gcc)
$(call allow-override,AR,$(CROSS_COMPILE)ar)
+$(call allow-override,NM,$(CROSS_COMPILE)nm)
EXT = -std=gnu99
INSTALL = install
@@ -157,8 +158,9 @@ PLUGINS_IN := $(PLUGINS:.so=-in.o)
TE_IN := $(OUTPUT)libtraceevent-in.o
LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
+DYNAMIC_LIST_FILE := $(OUTPUT)libtraceevent-dynamic-list
-CMD_TARGETS = $(LIB_FILE) $(PLUGINS)
+CMD_TARGETS = $(LIB_FILE) $(PLUGINS) $(DYNAMIC_LIST_FILE)
TARGETS = $(CMD_TARGETS)
@@ -175,6 +177,9 @@ $(OUTPUT)libtraceevent.so: $(TE_IN)
$(OUTPUT)libtraceevent.a: $(TE_IN)
$(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^
+$(OUTPUT)libtraceevent-dynamic-list: $(PLUGINS)
+ $(QUIET_GEN)$(call do_generate_dynamic_list_file, $(PLUGINS), $@)
+
plugins: $(PLUGINS)
__plugin_obj = $(notdir $@)
@@ -244,6 +249,13 @@ define do_install_plugins
done
endef
+define do_generate_dynamic_list_file
+ (echo '{'; \
+ $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u; \
+ echo '};'; \
+ ) > $2
+endef
+
install_lib: all_cmd install_plugins
$(call QUIET_INSTALL, $(LIB_FILE)) \
$(call do_install,$(LIB_FILE),$(libdir_SQ))
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 5816a3b..b1dfcd8 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -173,6 +173,9 @@ endif
LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
export LIBTRACEEVENT
+LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list
+LDFLAGS += -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST)
+
LIBAPI = $(LIB_PATH)libapi.a
export LIBAPI
@@ -278,7 +281,7 @@ build := -f $(srctree)/tools/build/Makefile.build dir=. obj
$(PERF_IN): $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h FORCE
$(Q)$(MAKE) $(build)=perf
-$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN)
+$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(LIBTRACEEVENT_DYNAMIC_LIST)
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(PERF_IN) $(LIBS) -o $@
$(GTK_IN): FORCE
@@ -373,7 +376,13 @@ $(LIB_FILE): $(LIBPERF_IN)
LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ)
$(LIBTRACEEVENT): FORCE
- $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a plugins
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
+
+libtraceevent_plugins: FORCE
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
+
+$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent-dynamic-list
$(LIBTRACEEVENT)-clean:
$(call QUIET_CLEAN, libtraceevent)
@@ -555,4 +564,5 @@ FORCE:
.PHONY: all install clean config-clean strip install-gtk
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE single_dep
+.PHONY: libtraceevent_plugins
--
1.8.5.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file
2015-05-28 13:28 [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
@ 2015-05-28 13:28 ` He Kuang
2015-06-09 9:52 ` [tip:perf/core] " tip-bot for He Kuang
2015-06-05 11:39 ` [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
2015-06-09 9:51 ` [tip:perf/core] " tip-bot for He Kuang
2 siblings, 1 reply; 6+ messages in thread
From: He Kuang @ 2015-05-28 13:28 UTC (permalink / raw)
To: acme, jolsa, mingo, a.p.zijlstra; +Cc: wangnan0, linux-kernel
The libtrace-dynamic-list file is used to export symbols used by
traceevent plugins.
Signed-off-by: He Kuang <hekuang@huawei.com>
---
tools/lib/traceevent/.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/lib/traceevent/.gitignore b/tools/lib/traceevent/.gitignore
index 35f56be..3c60335 100644
--- a/tools/lib/traceevent/.gitignore
+++ b/tools/lib/traceevent/.gitignore
@@ -1 +1,2 @@
TRACEEVENT-CFLAGS
+libtraceevent-dynamic-list
--
1.8.5.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins
2015-05-28 13:28 [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
2015-05-28 13:28 ` [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file He Kuang
@ 2015-06-05 11:39 ` He Kuang
2015-06-05 14:41 ` Arnaldo Carvalho de Melo
2015-06-09 9:51 ` [tip:perf/core] " tip-bot for He Kuang
2 siblings, 1 reply; 6+ messages in thread
From: He Kuang @ 2015-06-05 11:39 UTC (permalink / raw)
To: acme, jolsa, mingo, a.p.zijlstra, Namhyung Kim, Steven Rostedt
Cc: wangnan0, linux-kernel
hi, Arnaldo
ping..
On 2015/5/28 21:28, He Kuang wrote:
> Traceevent plugins need dynamic symbols exported from libtraceevent.a,
> otherwise a dlopen error will occur during plugins loading.
>
> This patch uses dynamic-list-file to export dynamic symbols which will
> be used in plugins to perf executable.
>
> The problem is covered up if feature-libpython is enabled, because
> PYTHON_EMBED_LDOPTS contains '-Xlinker --export-dynamic' which adds all
> symbols to the dynamic symbol table. So we should reproduce the problem
> by setting NO_LIBPYTHON=1.
>
> Before this patch:
>
> (Prepare plugins)
> $ ls /root/.traceevent/plugins/
> plugin_sched_switch.so
> plugin_function.so
> ...
>
> $ perf record -e 'ftrace:function' ls
>
> $ perf script
> Warning: could not load plugin '/mnt/data/root/.traceevent/plugins/plugin_sched_switch.so'
> /root/.traceevent/plugins/plugin_sched_switch.so: undefined symbol: pevent_unregister_event_handler
>
> Warning: could not load plugin '/root/.traceevent/plugins/plugin_function.so'
> /root/.traceevent/plugins/plugin_function.so: undefined symbol: warning
> ...
> :1049 1049 [000] 9666.754487: ftrace:function: ffffffff8118bc50 <-- ffffffff8118c5b3
> :1049 1049 [000] 9666.754487: ftrace:function: ffffffff818e2440 <-- ffffffff8118bc75
> :1049 1049 [000] 9666.754487: ftrace:function: ffffffff8106eee0 <-- ffffffff811212e2
>
> After this patch:
>
> $ perf record -e 'ftrace:function' ls
> $ perf script
> :1049 1049 [000] 9666.754487: ftrace:function: __set_task_comm
> :1049 1049 [000] 9666.754487: ftrace:function: _raw_spin_lock
> :1049 1049 [000] 9666.754487: ftrace:function: task_tgid_nr_ns
> ...
>
> Signed-off-by: He Kuang <hekuang@huawei.com>
> Acked-by: Jiri Olsa <jolsa@kernel.org>
> ---
> tools/lib/traceevent/Makefile | 14 +++++++++++++-
> tools/perf/Makefile.perf | 14 ++++++++++++--
> 2 files changed, 25 insertions(+), 3 deletions(-)
>
> diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
> index 8464039..6daaff6 100644
> --- a/tools/lib/traceevent/Makefile
> +++ b/tools/lib/traceevent/Makefile
> @@ -23,6 +23,7 @@ endef
> # Allow setting CC and AR, or setting CROSS_COMPILE as a prefix.
> $(call allow-override,CC,$(CROSS_COMPILE)gcc)
> $(call allow-override,AR,$(CROSS_COMPILE)ar)
> +$(call allow-override,NM,$(CROSS_COMPILE)nm)
>
> EXT = -std=gnu99
> INSTALL = install
> @@ -157,8 +158,9 @@ PLUGINS_IN := $(PLUGINS:.so=-in.o)
>
> TE_IN := $(OUTPUT)libtraceevent-in.o
> LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
> +DYNAMIC_LIST_FILE := $(OUTPUT)libtraceevent-dynamic-list
>
> -CMD_TARGETS = $(LIB_FILE) $(PLUGINS)
> +CMD_TARGETS = $(LIB_FILE) $(PLUGINS) $(DYNAMIC_LIST_FILE)
>
> TARGETS = $(CMD_TARGETS)
>
> @@ -175,6 +177,9 @@ $(OUTPUT)libtraceevent.so: $(TE_IN)
> $(OUTPUT)libtraceevent.a: $(TE_IN)
> $(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^
>
> +$(OUTPUT)libtraceevent-dynamic-list: $(PLUGINS)
> + $(QUIET_GEN)$(call do_generate_dynamic_list_file, $(PLUGINS), $@)
> +
> plugins: $(PLUGINS)
>
> __plugin_obj = $(notdir $@)
> @@ -244,6 +249,13 @@ define do_install_plugins
> done
> endef
>
> +define do_generate_dynamic_list_file
> + (echo '{'; \
> + $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u; \
> + echo '};'; \
> + ) > $2
> +endef
> +
> install_lib: all_cmd install_plugins
> $(call QUIET_INSTALL, $(LIB_FILE)) \
> $(call do_install,$(LIB_FILE),$(libdir_SQ))
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 5816a3b..b1dfcd8 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -173,6 +173,9 @@ endif
> LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
> export LIBTRACEEVENT
>
> +LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list
> +LDFLAGS += -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST)
> +
> LIBAPI = $(LIB_PATH)libapi.a
> export LIBAPI
>
> @@ -278,7 +281,7 @@ build := -f $(srctree)/tools/build/Makefile.build dir=. obj
> $(PERF_IN): $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h FORCE
> $(Q)$(MAKE) $(build)=perf
>
> -$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN)
> +$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(LIBTRACEEVENT_DYNAMIC_LIST)
> $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(PERF_IN) $(LIBS) -o $@
>
> $(GTK_IN): FORCE
> @@ -373,7 +376,13 @@ $(LIB_FILE): $(LIBPERF_IN)
> LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ)
>
> $(LIBTRACEEVENT): FORCE
> - $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a plugins
> + $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
> +
> +libtraceevent_plugins: FORCE
> + $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
> +
> +$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
> + $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent-dynamic-list
>
> $(LIBTRACEEVENT)-clean:
> $(call QUIET_CLEAN, libtraceevent)
> @@ -555,4 +564,5 @@ FORCE:
> .PHONY: all install clean config-clean strip install-gtk
> .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
> .PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE single_dep
> +.PHONY: libtraceevent_plugins
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins
2015-06-05 11:39 ` [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
@ 2015-06-05 14:41 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 6+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-06-05 14:41 UTC (permalink / raw)
To: He Kuang
Cc: jolsa, mingo, a.p.zijlstra, Namhyung Kim, Steven Rostedt,
wangnan0, linux-kernel
Em Fri, Jun 05, 2015 at 07:39:26PM +0800, He Kuang escreveu:
> hi, Arnaldo
>
> ping..
Thanks, applied both.
- Arnaldo
^ permalink raw reply [flat|nested] 6+ messages in thread
* [tip:perf/core] tools lib traceevent: Export dynamic symbols used by traceevent plugins
2015-05-28 13:28 [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
2015-05-28 13:28 ` [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file He Kuang
2015-06-05 11:39 ` [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
@ 2015-06-09 9:51 ` tip-bot for He Kuang
2 siblings, 0 replies; 6+ messages in thread
From: tip-bot for He Kuang @ 2015-06-09 9:51 UTC (permalink / raw)
To: linux-tip-commits
Cc: a.p.zijlstra, mingo, hekuang, tglx, wangnan0, acme, hpa,
linux-kernel, jolsa
Commit-ID: e3d09ec8126fe2c9a3ade661e2126e215ca27a80
Gitweb: http://git.kernel.org/tip/e3d09ec8126fe2c9a3ade661e2126e215ca27a80
Author: He Kuang <hekuang@huawei.com>
AuthorDate: Thu, 28 May 2015 13:28:54 +0000
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 8 Jun 2015 10:30:31 -0300
tools lib traceevent: Export dynamic symbols used by traceevent plugins
Traceevent plugins need dynamic symbols exported from libtraceevent.a,
otherwise a dlopen error will occur during plugins loading.
This patch uses dynamic-list-file to export dynamic symbols which will
be used in plugins to perf executable.
The problem is covered up if feature-libpython is enabled, because
PYTHON_EMBED_LDOPTS contains '-Xlinker --export-dynamic' which adds all
symbols to the dynamic symbol table. So we should reproduce the problem
by setting NO_LIBPYTHON=1.
Before this patch:
(Prepare plugins)
$ ls /root/.traceevent/plugins/
plugin_sched_switch.so
plugin_function.so
...
$ perf record -e 'ftrace:function' ls
$ perf script
Warning: could not load plugin '/mnt/data/root/.traceevent/plugins/plugin_sched_switch.so'
/root/.traceevent/plugins/plugin_sched_switch.so: undefined symbol: pevent_unregister_event_handler
Warning: could not load plugin '/root/.traceevent/plugins/plugin_function.so'
/root/.traceevent/plugins/plugin_function.so: undefined symbol: warning
...
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff8118bc50 <-- ffffffff8118c5b3
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff818e2440 <-- ffffffff8118bc75
:1049 1049 [000] 9666.754487: ftrace:function: ffffffff8106eee0 <-- ffffffff811212e2
After this patch:
$ perf record -e 'ftrace:function' ls
$ perf script
:1049 1049 [000] 9666.754487: ftrace:function: __set_task_comm
:1049 1049 [000] 9666.754487: ftrace:function: _raw_spin_lock
:1049 1049 [000] 9666.754487: ftrace:function: task_tgid_nr_ns
...
Signed-off-by: He Kuang <hekuang@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1432819735-35040-1-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/traceevent/Makefile | 14 +++++++++++++-
tools/perf/Makefile.perf | 14 ++++++++++++--
2 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
index 8464039..6daaff6 100644
--- a/tools/lib/traceevent/Makefile
+++ b/tools/lib/traceevent/Makefile
@@ -23,6 +23,7 @@ endef
# Allow setting CC and AR, or setting CROSS_COMPILE as a prefix.
$(call allow-override,CC,$(CROSS_COMPILE)gcc)
$(call allow-override,AR,$(CROSS_COMPILE)ar)
+$(call allow-override,NM,$(CROSS_COMPILE)nm)
EXT = -std=gnu99
INSTALL = install
@@ -157,8 +158,9 @@ PLUGINS_IN := $(PLUGINS:.so=-in.o)
TE_IN := $(OUTPUT)libtraceevent-in.o
LIB_FILE := $(addprefix $(OUTPUT),$(LIB_FILE))
+DYNAMIC_LIST_FILE := $(OUTPUT)libtraceevent-dynamic-list
-CMD_TARGETS = $(LIB_FILE) $(PLUGINS)
+CMD_TARGETS = $(LIB_FILE) $(PLUGINS) $(DYNAMIC_LIST_FILE)
TARGETS = $(CMD_TARGETS)
@@ -175,6 +177,9 @@ $(OUTPUT)libtraceevent.so: $(TE_IN)
$(OUTPUT)libtraceevent.a: $(TE_IN)
$(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^
+$(OUTPUT)libtraceevent-dynamic-list: $(PLUGINS)
+ $(QUIET_GEN)$(call do_generate_dynamic_list_file, $(PLUGINS), $@)
+
plugins: $(PLUGINS)
__plugin_obj = $(notdir $@)
@@ -244,6 +249,13 @@ define do_install_plugins
done
endef
+define do_generate_dynamic_list_file
+ (echo '{'; \
+ $(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u; \
+ echo '};'; \
+ ) > $2
+endef
+
install_lib: all_cmd install_plugins
$(call QUIET_INSTALL, $(LIB_FILE)) \
$(call do_install,$(LIB_FILE),$(libdir_SQ))
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 5816a3b..b1dfcd8 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -173,6 +173,9 @@ endif
LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
export LIBTRACEEVENT
+LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list
+LDFLAGS += -Xlinker --dynamic-list=$(LIBTRACEEVENT_DYNAMIC_LIST)
+
LIBAPI = $(LIB_PATH)libapi.a
export LIBAPI
@@ -278,7 +281,7 @@ build := -f $(srctree)/tools/build/Makefile.build dir=. obj
$(PERF_IN): $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h FORCE
$(Q)$(MAKE) $(build)=perf
-$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN)
+$(OUTPUT)perf: $(PERFLIBS) $(PERF_IN) $(LIBTRACEEVENT_DYNAMIC_LIST)
$(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $(PERF_IN) $(LIBS) -o $@
$(GTK_IN): FORCE
@@ -373,7 +376,13 @@ $(LIB_FILE): $(LIBPERF_IN)
LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ)
$(LIBTRACEEVENT): FORCE
- $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a plugins
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
+
+libtraceevent_plugins: FORCE
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
+
+$(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent-dynamic-list
$(LIBTRACEEVENT)-clean:
$(call QUIET_CLEAN, libtraceevent)
@@ -555,4 +564,5 @@ FORCE:
.PHONY: all install clean config-clean strip install-gtk
.PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell
.PHONY: $(GIT-HEAD-PHONY) TAGS tags cscope FORCE single_dep
+.PHONY: libtraceevent_plugins
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [tip:perf/core] tools lib traceevent: Ignore libtrace-dynamic-list file
2015-05-28 13:28 ` [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file He Kuang
@ 2015-06-09 9:52 ` tip-bot for He Kuang
0 siblings, 0 replies; 6+ messages in thread
From: tip-bot for He Kuang @ 2015-06-09 9:52 UTC (permalink / raw)
To: linux-tip-commits
Cc: hpa, acme, wangnan0, a.p.zijlstra, jolsa, linux-kernel, hekuang,
tglx, mingo
Commit-ID: 38e096249b4fca1a26ca8908ea2018a5faf366e2
Gitweb: http://git.kernel.org/tip/38e096249b4fca1a26ca8908ea2018a5faf366e2
Author: He Kuang <hekuang@huawei.com>
AuthorDate: Thu, 28 May 2015 13:28:55 +0000
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Mon, 8 Jun 2015 10:30:32 -0300
tools lib traceevent: Ignore libtrace-dynamic-list file
The libtrace-dynamic-list file is used to export symbols used by
traceevent plugins.
Signed-off-by: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1432819735-35040-2-git-send-email-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/lib/traceevent/.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/lib/traceevent/.gitignore b/tools/lib/traceevent/.gitignore
index 35f56be..3c60335 100644
--- a/tools/lib/traceevent/.gitignore
+++ b/tools/lib/traceevent/.gitignore
@@ -1 +1,2 @@
TRACEEVENT-CFLAGS
+libtraceevent-dynamic-list
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-06-09 9:54 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-28 13:28 [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
2015-05-28 13:28 ` [PATCH RESEND 2/2] tools lib traceevent: Ignore libtrace-dynamic-list file He Kuang
2015-06-09 9:52 ` [tip:perf/core] " tip-bot for He Kuang
2015-06-05 11:39 ` [PATCH RESEND 1/2] tools lib traceevent: Export dynamic symbols used by traceevent plugins He Kuang
2015-06-05 14:41 ` Arnaldo Carvalho de Melo
2015-06-09 9:51 ` [tip:perf/core] " tip-bot for He Kuang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.