Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Mon, 11 Dec 2017 15:25:47 -0300 Arnaldo Carvalho de Melowrote: > Em Fri, Dec 08, 2017 at 08:49:46AM -0600, Paul Clarke escreveu: > > > > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > > On Thu, 7 Dec 2017 10:34:51 -0600 > > > Paul Clarke wrote: > > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > >>> automatic generated event name. This fixes wildcard event > > >>> adding like below case; > > >>> > > >>> = > > >>> # perf probe -x /lib64/libc-2.25.so malloc* > > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > >>> Error: Failed to add events. > > >>> = > > >>> > > >>> This failure was caused by a versioned suffix symbol. > > >>> With this fix, perf probe automatically cuts the > > >>> suffix after @ as below. > > >>> > > >>> = > > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > > >>> Added new events: > > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_consolidate (on malloc* in > > >>> /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_usable_size (on malloc* in > > >>> /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > >>> > > >>> You can now use it in all perf tools, such as: > > >>> > > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > > >>> > > >>> = > > >> > > >> I think this will still fall over for a case where there are multiple > > >> versions of the same base symbol, like: > > >> > > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events > > > :) > > > > > > This feature (number suffix) is anyway required for the case that inlined > > > function is spreaded in multiple places. I think this is natural for perf > > > probe. > > > > I can live with that. > > > > Is the versioning tag retained for display with "perf probe -l" display, so > > the probe points can be distinguished? > > > > In other words, will one see: > > # perf probe -l > > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > > /usr/lib64/libc-2.17.so) > > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > > /usr/lib64/libc-2.17.so) > > or > > # perf probe -l > > probe_libc:sched_getaffinity (on sched_getaffinity in > > /usr/lib64/libc-2.17.so) > > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > > /usr/lib64/libc-2.17.so) > > [root@jouet ~]# perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > [root@jouet ~]# perf probe -l > probe_libc:malloc(on 0xd22a6973 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on 0x25db6f5a in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on 0x88f7c44a in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on 0x8de2b533 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on 0x8b327bde in /usr/lib64/libc-2.25.so) > probe_libc:malloc_printerr (on 0x8fff087c in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on 0x861940e6 in /usr/lib64/libc-2.25.so) >
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Mon, 11 Dec 2017 15:25:47 -0300 Arnaldo Carvalho de Melo wrote: > Em Fri, Dec 08, 2017 at 08:49:46AM -0600, Paul Clarke escreveu: > > > > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > > On Thu, 7 Dec 2017 10:34:51 -0600 > > > Paul Clarke wrote: > > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > >>> automatic generated event name. This fixes wildcard event > > >>> adding like below case; > > >>> > > >>> = > > >>> # perf probe -x /lib64/libc-2.25.so malloc* > > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > >>> Error: Failed to add events. > > >>> = > > >>> > > >>> This failure was caused by a versioned suffix symbol. > > >>> With this fix, perf probe automatically cuts the > > >>> suffix after @ as below. > > >>> > > >>> = > > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > > >>> Added new events: > > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_consolidate (on malloc* in > > >>> /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_usable_size (on malloc* in > > >>> /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > >>> > > >>> You can now use it in all perf tools, such as: > > >>> > > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > > >>> > > >>> = > > >> > > >> I think this will still fall over for a case where there are multiple > > >> versions of the same base symbol, like: > > >> > > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events > > > :) > > > > > > This feature (number suffix) is anyway required for the case that inlined > > > function is spreaded in multiple places. I think this is natural for perf > > > probe. > > > > I can live with that. > > > > Is the versioning tag retained for display with "perf probe -l" display, so > > the probe points can be distinguished? > > > > In other words, will one see: > > # perf probe -l > > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > > /usr/lib64/libc-2.17.so) > > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > > /usr/lib64/libc-2.17.so) > > or > > # perf probe -l > > probe_libc:sched_getaffinity (on sched_getaffinity in > > /usr/lib64/libc-2.17.so) > > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > > /usr/lib64/libc-2.17.so) > > [root@jouet ~]# perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > [root@jouet ~]# perf probe -l > probe_libc:malloc(on 0xd22a6973 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on 0x25db6f5a in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on 0x88f7c44a in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on 0x8de2b533 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on 0x8b327bde in /usr/lib64/libc-2.25.so) > probe_libc:malloc_printerr (on 0x8fff087c in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on 0x861940e6 in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on 0x51fa3cdc
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Fri, Dec 08, 2017 at 08:49:46AM -0600, Paul Clarke escreveu: > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > On Thu, 7 Dec 2017 10:34:51 -0600 > > Paul Clarkewrote: > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > >>> automatic generated event name. This fixes wildcard event > >>> adding like below case; > >>> > >>> = > >>> # perf probe -x /lib64/libc-2.25.so malloc* > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > >>> Error: Failed to add events. > >>> = > >>> > >>> This failure was caused by a versioned suffix symbol. > >>> With this fix, perf probe automatically cuts the > >>> suffix after @ as below. > >>> > >>> = > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > >>> Added new events: > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> > >>> You can now use it in all perf tools, such as: > >>> > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > >>> > >>> = > >> > >> I think this will still fall over for a case where there are multiple > >> versions of the same base symbol, like: > >> > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > > > This feature (number suffix) is anyway required for the case that inlined > > function is spreaded in multiple places. I think this is natural for perf > > probe. > > I can live with that. > > Is the versioning tag retained for display with "perf probe -l" display, so > the probe points can be distinguished? > > In other words, will one see: > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > /usr/lib64/libc-2.17.so) > or > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > /usr/lib64/libc-2.17.so) [root@jouet ~]# perf probe -x /lib64/libc-2.25.so malloc* Added new events: probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc_set_state -aR sleep 1 [root@jouet ~]# perf probe -l probe_libc:malloc(on 0xd22a6973 in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on 0x25db6f5a in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on 0x88f7c44a in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on 0x8de2b533 in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on 0x8b327bde in /usr/lib64/libc-2.25.so) probe_libc:malloc_printerr (on 0x8fff087c in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on 0x861940e6 in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on 0x51fa3cdc in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on 0xa9fa4e43 in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on 0xceb5e090 in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on 0x6ebc00f5 in /usr/lib64/libc-2.25.so) [root@jouet ~]# [acme@jouet perf]$ nm
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Fri, Dec 08, 2017 at 08:49:46AM -0600, Paul Clarke escreveu: > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > On Thu, 7 Dec 2017 10:34:51 -0600 > > Paul Clarke wrote: > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > >>> automatic generated event name. This fixes wildcard event > >>> adding like below case; > >>> > >>> = > >>> # perf probe -x /lib64/libc-2.25.so malloc* > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > >>> Error: Failed to add events. > >>> = > >>> > >>> This failure was caused by a versioned suffix symbol. > >>> With this fix, perf probe automatically cuts the > >>> suffix after @ as below. > >>> > >>> = > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > >>> Added new events: > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> > >>> You can now use it in all perf tools, such as: > >>> > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > >>> > >>> = > >> > >> I think this will still fall over for a case where there are multiple > >> versions of the same base symbol, like: > >> > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > > > This feature (number suffix) is anyway required for the case that inlined > > function is spreaded in multiple places. I think this is natural for perf > > probe. > > I can live with that. > > Is the versioning tag retained for display with "perf probe -l" display, so > the probe points can be distinguished? > > In other words, will one see: > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > /usr/lib64/libc-2.17.so) > or > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > /usr/lib64/libc-2.17.so) [root@jouet ~]# perf probe -x /lib64/libc-2.25.so malloc* Added new events: probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc_set_state -aR sleep 1 [root@jouet ~]# perf probe -l probe_libc:malloc(on 0xd22a6973 in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on 0x25db6f5a in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on 0x88f7c44a in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on 0xdd38eca7 in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on 0x8de2b533 in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on 0x8b327bde in /usr/lib64/libc-2.25.so) probe_libc:malloc_printerr (on 0x8fff087c in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on 0x861940e6 in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on 0x51fa3cdc in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on 0xa9fa4e43 in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on 0xceb5e090 in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on 0x6ebc00f5 in /usr/lib64/libc-2.25.so) [root@jouet ~]# [acme@jouet perf]$ nm /lib64/libc-2.25.so | grep
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Fri, 8 Dec 2017 08:49:46 -0600 Paul Clarkewrote: > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > On Thu, 7 Dec 2017 10:34:51 -0600 > > Paul Clarke wrote: > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > >>> automatic generated event name. This fixes wildcard event > >>> adding like below case; > >>> > >>> = > >>> # perf probe -x /lib64/libc-2.25.so malloc* > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > >>> Error: Failed to add events. > >>> = > >>> > >>> This failure was caused by a versioned suffix symbol. > >>> With this fix, perf probe automatically cuts the > >>> suffix after @ as below. > >>> > >>> = > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > >>> Added new events: > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> > >>> You can now use it in all perf tools, such as: > >>> > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > >>> > >>> = > >> > >> I think this will still fall over for a case where there are multiple > >> versions of the same base symbol, like: > >> > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > > > This feature (number suffix) is anyway required for the case that inlined > > function is spreaded in multiple places. I think this is natural for perf > > probe. > > I can live with that. > > Is the versioning tag retained for display with "perf probe -l" display, so > the probe points can be distinguished? > > In other words, will one see: > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > /usr/lib64/libc-2.17.so) Yes, this style, since the symbols are recorded with version suffixes. Thank you, > or > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > > PC > > -- > To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Fri, 8 Dec 2017 08:49:46 -0600 Paul Clarke wrote: > > > On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > > On Thu, 7 Dec 2017 10:34:51 -0600 > > Paul Clarke wrote: > >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > >>> automatic generated event name. This fixes wildcard event > >>> adding like below case; > >>> > >>> = > >>> # perf probe -x /lib64/libc-2.25.so malloc* > >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > >>> Error: Failed to add events. > >>> = > >>> > >>> This failure was caused by a versioned suffix symbol. > >>> With this fix, perf probe automatically cuts the > >>> suffix after @ as below. > >>> > >>> = > >>> # ./perf probe -x /lib64/libc-2.25.so malloc* > >>> Added new events: > >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > >>> > >>> You can now use it in all perf tools, such as: > >>> > >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 > >>> > >>> = > >> > >> I think this will still fall over for a case where there are multiple > >> versions of the same base symbol, like: > >> > >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > >> 00134430 T sched_getaffinity@GLIBC_2.3.3 > >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > > > This feature (number suffix) is anyway required for the case that inlined > > function is spreaded in multiple places. I think this is natural for perf > > probe. > > I can live with that. > > Is the versioning tag retained for display with "perf probe -l" display, so > the probe points can be distinguished? > > In other words, will one see: > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in > /usr/lib64/libc-2.17.so) Yes, this style, since the symbols are recorded with version suffixes. Thank you, > or > # perf probe -l > probe_libc:sched_getaffinity (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > probe_libc:sched_getaffinity_1 (on sched_getaffinity in > /usr/lib64/libc-2.17.so) > > PC > > -- > To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > On Thu, 7 Dec 2017 10:34:51 -0600 > Paul Clarkewrote: >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from >>> automatic generated event name. This fixes wildcard event >>> adding like below case; >>> >>> = >>> # perf probe -x /lib64/libc-2.25.so malloc* >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. >>> Error: Failed to add events. >>> = >>> >>> This failure was caused by a versioned suffix symbol. >>> With this fix, perf probe automatically cuts the >>> suffix after @ as below. >>> >>> = >>> # ./perf probe -x /lib64/libc-2.25.so malloc* >>> Added new events: >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) >>> >>> You can now use it in all perf tools, such as: >>> >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 >>> >>> = >> >> I think this will still fall over for a case where there are multiple >> versions of the same base symbol, like: >> >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' >> 00134430 T sched_getaffinity@GLIBC_2.3.3 >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > This feature (number suffix) is anyway required for the case that inlined > function is spreaded in multiple places. I think this is natural for perf > probe. I can live with that. Is the versioning tag retained for display with "perf probe -l" display, so the probe points can be distinguished? In other words, will one see: # perf probe -l probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in /usr/lib64/libc-2.17.so) probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in /usr/lib64/libc-2.17.so) or # perf probe -l probe_libc:sched_getaffinity (on sched_getaffinity in /usr/lib64/libc-2.17.so) probe_libc:sched_getaffinity_1 (on sched_getaffinity in /usr/lib64/libc-2.17.so) PC
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 09:01 PM, Masami Hiramatsu wrote: > On Thu, 7 Dec 2017 10:34:51 -0600 > Paul Clarke wrote: >> On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: >>> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from >>> automatic generated event name. This fixes wildcard event >>> adding like below case; >>> >>> = >>> # perf probe -x /lib64/libc-2.25.so malloc* >>> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. >>> Error: Failed to add events. >>> = >>> >>> This failure was caused by a versioned suffix symbol. >>> With this fix, perf probe automatically cuts the >>> suffix after @ as below. >>> >>> = >>> # ./perf probe -x /lib64/libc-2.25.so malloc* >>> Added new events: >>> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) >>> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) >>> >>> You can now use it in all perf tools, such as: >>> >>> perf record -e probe_libc:malloc_set_state -aR sleep 1 >>> >>> = >> >> I think this will still fall over for a case where there are multiple >> versions of the same base symbol, like: >> >> $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' >> 00134430 T sched_getaffinity@GLIBC_2.3.3 >> 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 > > No, in that case perf probe adds number suffix (_1, _2...) for new events :) > > This feature (number suffix) is anyway required for the case that inlined > function is spreaded in multiple places. I think this is natural for perf > probe. I can live with that. Is the versioning tag retained for display with "perf probe -l" display, so the probe points can be distinguished? In other words, will one see: # perf probe -l probe_libc:sched_getaffinity (on sched_getaffinity@GLIBC_2.3.3 in /usr/lib64/libc-2.17.so) probe_libc:sched_getaffinity_1 (on sched_getaffinity@@GLIBC_2.3.4 in /usr/lib64/libc-2.17.so) or # perf probe -l probe_libc:sched_getaffinity (on sched_getaffinity in /usr/lib64/libc-2.17.so) probe_libc:sched_getaffinity_1 (on sched_getaffinity in /usr/lib64/libc-2.17.so) PC
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Thu, 7 Dec 2017 13:56:59 -0300 Arnaldo Carvalho de Melowrote: > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > automatic generated event name. This fixes wildcard event > > adding like below case; > > > > = > > # perf probe -x /lib64/libc-2.25.so malloc* > > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > Error: Failed to add events. > > = > > > > This failure was caused by a versioned suffix symbol. > > With this fix, perf probe automatically cuts the > > suffix after @ as below. > > > > = > > # ./perf probe -x /lib64/libc-2.25.so malloc* > > Added new events: > > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > Thanks for working on this! I'm now going over it, and one thing I > noticed was that the (on malloc*) on all the entries matched by that > wildcard, can I suggest that you expand it there as well? I.e. > > probe_libc:malloc_set_state (on malloc_set_state in > /usr/lib64/libc-2.25.so) > Hmm, the reason why I chose it was perf probe accepted multiple probe points at once. e.g. ./perf probe -x /lib64/libc-2.25.so -a malloc* -a free* So, if we specify several probe points, I guess user will like to see which events come from which one. > This way we'll now when aliases are used, and also for the versioning > case, i.e. to which version is a probe pointing? Currently we can know that by perf probe -l. I would recommend this way, since -l can show you more precise information (and if it take a time to read/analyze debuginfo, user can understand the reason why). Thank you, > > See also Paul Clarke's question and suggestion, which I agree, i.e. > instead of chopping off the version, just replace the chars with valid > ones or better, do what Paul suggests, be more flexible in interpreting > @, i.e. if it is a number and/or fails to point to any file, interpret > it as versioning. > > - Arnaldo > > > You can now use it in all perf tools, such as: > > > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > > > = > > > > Signed-off-by: Masami Hiramatsu > > Reported-by: Arnaldo Carvalho de Melo > > Reported-by: bhargavb > > --- > > tools/perf/util/probe-event.c |4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > > index c0067950e56f..74435fb7ab7f 100644 > > --- a/tools/perf/util/probe-event.c > > +++ b/tools/perf/util/probe-event.c > > @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, > > const char *base, > > if (!nbase) > > return -ENOMEM; > > > > - /* Cut off the dot suffixes (e.g. .const, .isra)*/ > > - p = strchr(nbase, '.'); > > + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ > > + p = strpbrk(nbase, ".@"); > > if (p && p != nbase) > > *p = '\0'; > > -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Thu, 7 Dec 2017 13:56:59 -0300 Arnaldo Carvalho de Melo wrote: > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > automatic generated event name. This fixes wildcard event > > adding like below case; > > > > = > > # perf probe -x /lib64/libc-2.25.so malloc* > > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > Error: Failed to add events. > > = > > > > This failure was caused by a versioned suffix symbol. > > With this fix, perf probe automatically cuts the > > suffix after @ as below. > > > > = > > # ./perf probe -x /lib64/libc-2.25.so malloc* > > Added new events: > > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > Thanks for working on this! I'm now going over it, and one thing I > noticed was that the (on malloc*) on all the entries matched by that > wildcard, can I suggest that you expand it there as well? I.e. > > probe_libc:malloc_set_state (on malloc_set_state in > /usr/lib64/libc-2.25.so) > Hmm, the reason why I chose it was perf probe accepted multiple probe points at once. e.g. ./perf probe -x /lib64/libc-2.25.so -a malloc* -a free* So, if we specify several probe points, I guess user will like to see which events come from which one. > This way we'll now when aliases are used, and also for the versioning > case, i.e. to which version is a probe pointing? Currently we can know that by perf probe -l. I would recommend this way, since -l can show you more precise information (and if it take a time to read/analyze debuginfo, user can understand the reason why). Thank you, > > See also Paul Clarke's question and suggestion, which I agree, i.e. > instead of chopping off the version, just replace the chars with valid > ones or better, do what Paul suggests, be more flexible in interpreting > @, i.e. if it is a number and/or fails to point to any file, interpret > it as versioning. > > - Arnaldo > > > You can now use it in all perf tools, such as: > > > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > > > = > > > > Signed-off-by: Masami Hiramatsu > > Reported-by: Arnaldo Carvalho de Melo > > Reported-by: bhargavb > > --- > > tools/perf/util/probe-event.c |4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > > index c0067950e56f..74435fb7ab7f 100644 > > --- a/tools/perf/util/probe-event.c > > +++ b/tools/perf/util/probe-event.c > > @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, > > const char *base, > > if (!nbase) > > return -ENOMEM; > > > > - /* Cut off the dot suffixes (e.g. .const, .isra)*/ > > - p = strchr(nbase, '.'); > > + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ > > + p = strpbrk(nbase, ".@"); > > if (p && p != nbase) > > *p = '\0'; > > -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Thu, 7 Dec 2017 10:34:51 -0600 Paul Clarkewrote: > > > On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > automatic generated event name. This fixes wildcard event > > adding like below case; > > > > = > > # perf probe -x /lib64/libc-2.25.so malloc* > > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > Error: Failed to add events. > > = > > > > This failure was caused by a versioned suffix symbol. > > With this fix, perf probe automatically cuts the > > suffix after @ as below. > > > > = > > # ./perf probe -x /lib64/libc-2.25.so malloc* > > Added new events: > > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > > > You can now use it in all perf tools, such as: > > > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > > > = > > I think this will still fall over for a case where there are multiple > versions of the same base symbol, like: > > $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > 00134430 T sched_getaffinity@GLIBC_2.3.3 > 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 No, in that case perf probe adds number suffix (_1, _2...) for new events :) This feature (number suffix) is anyway required for the case that inlined function is spreaded in multiple places. I think this is natural for perf probe. Thank you, > > Should we retain the versioning string in some form? > "sched_getaffinity--GLIBC_2.3.4"? Should we instead interpret the '@' symbol > more flexibly, so maybe first assume it is a version string, and if not > found, try to see if it's a valid "@SRC" specification? > > PC > -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On Thu, 7 Dec 2017 10:34:51 -0600 Paul Clarke wrote: > > > On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > > automatic generated event name. This fixes wildcard event > > adding like below case; > > > > = > > # perf probe -x /lib64/libc-2.25.so malloc* > > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > > Error: Failed to add events. > > = > > > > This failure was caused by a versioned suffix symbol. > > With this fix, perf probe automatically cuts the > > suffix after @ as below. > > > > = > > # ./perf probe -x /lib64/libc-2.25.so malloc* > > Added new events: > > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > > > You can now use it in all perf tools, such as: > > > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > > > = > > I think this will still fall over for a case where there are multiple > versions of the same base symbol, like: > > $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' > 00134430 T sched_getaffinity@GLIBC_2.3.3 > 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 No, in that case perf probe adds number suffix (_1, _2...) for new events :) This feature (number suffix) is anyway required for the case that inlined function is spreaded in multiple places. I think this is natural for perf probe. Thank you, > > Should we retain the versioning string in some form? > "sched_getaffinity--GLIBC_2.3.4"? Should we instead interpret the '@' symbol > more flexibly, so maybe first assume it is a version string, and if not > found, try to see if it's a valid "@SRC" specification? > > PC > -- Masami Hiramatsu
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Thu, Dec 07, 2017 at 11:24:47AM -0600, Paul Clarke escreveu: > On 12/07/2017 10:56 AM, Arnaldo Carvalho de Melo wrote: > > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > > See also Paul Clarke's question and suggestion, which I agree, i.e. > > instead of chopping off the version, just replace the chars with valid > > ones or better, do what Paul suggests, be more flexible in interpreting > > @, i.e. if it is a number and/or fails to point to any file, interpret > > it as versioning. > It's a nit, and subjective, but I'd favor checking for versioning > first, then file. The namespaces are very unlikely to intersect, but > I could foresee symbols like "sym@implA.c" and "sym@implB.c" more > likely than a symbol in a file "GLIBC_2.2.5". > Perhaps straying toward bikeshedding... Nah, those are valid concerns, and I share them. - Arnaldo
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Thu, Dec 07, 2017 at 11:24:47AM -0600, Paul Clarke escreveu: > On 12/07/2017 10:56 AM, Arnaldo Carvalho de Melo wrote: > > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > > See also Paul Clarke's question and suggestion, which I agree, i.e. > > instead of chopping off the version, just replace the chars with valid > > ones or better, do what Paul suggests, be more flexible in interpreting > > @, i.e. if it is a number and/or fails to point to any file, interpret > > it as versioning. > It's a nit, and subjective, but I'd favor checking for versioning > first, then file. The namespaces are very unlikely to intersect, but > I could foresee symbols like "sym@implA.c" and "sym@implB.c" more > likely than a symbol in a file "GLIBC_2.2.5". > Perhaps straying toward bikeshedding... Nah, those are valid concerns, and I share them. - Arnaldo
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 10:56 AM, Arnaldo Carvalho de Melo wrote: > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: >> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from >> automatic generated event name. This fixes wildcard event >> adding like below case; >> >> = >> # perf probe -x /lib64/libc-2.25.so malloc* >> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. >> Error: Failed to add events. >> = >> >> This failure was caused by a versioned suffix symbol. >> With this fix, perf probe automatically cuts the >> suffix after @ as below. >> >> = >> # ./perf probe -x /lib64/libc-2.25.so malloc* >> Added new events: >> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > Thanks for working on this! I'm now going over it, and one thing I > noticed was that the (on malloc*) on all the entries matched by that > wildcard, can I suggest that you expand it there as well? I.e. > > probe_libc:malloc_set_state (on malloc_set_state in > /usr/lib64/libc-2.25.so) > > This way we'll now when aliases are used, and also for the versioning > case, i.e. to which version is a probe pointing? > > See also Paul Clarke's question and suggestion, which I agree, i.e. > instead of chopping off the version, just replace the chars with valid > ones or better, do what Paul suggests, be more flexible in interpreting > @, i.e. if it is a number and/or fails to point to any file, interpret > it as versioning. It's a nit, and subjective, but I'd favor checking for versioning first, then file. The namespaces are very unlikely to intersect, but I could foresee symbols like "sym@implA.c" and "sym@implB.c" more likely than a symbol in a file "GLIBC_2.2.5". Perhaps straying toward bikeshedding... PC
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 10:56 AM, Arnaldo Carvalho de Melo wrote: > Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: >> Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from >> automatic generated event name. This fixes wildcard event >> adding like below case; >> >> = >> # perf probe -x /lib64/libc-2.25.so malloc* >> Internal error: "malloc_get_state@GLIBC_2" is wrong event name. >> Error: Failed to add events. >> = >> >> This failure was caused by a versioned suffix symbol. >> With this fix, perf probe automatically cuts the >> suffix after @ as below. >> >> = >> # ./perf probe -x /lib64/libc-2.25.so malloc* >> Added new events: >> probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) >> probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > Thanks for working on this! I'm now going over it, and one thing I > noticed was that the (on malloc*) on all the entries matched by that > wildcard, can I suggest that you expand it there as well? I.e. > > probe_libc:malloc_set_state (on malloc_set_state in > /usr/lib64/libc-2.25.so) > > This way we'll now when aliases are used, and also for the versioning > case, i.e. to which version is a probe pointing? > > See also Paul Clarke's question and suggestion, which I agree, i.e. > instead of chopping off the version, just replace the chars with valid > ones or better, do what Paul suggests, be more flexible in interpreting > @, i.e. if it is a number and/or fails to point to any file, interpret > it as versioning. It's a nit, and subjective, but I'd favor checking for versioning first, then file. The namespaces are very unlikely to intersect, but I could foresee symbols like "sym@implA.c" and "sym@implB.c" more likely than a symbol in a file "GLIBC_2.2.5". Perhaps straying toward bikeshedding... PC
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > automatic generated event name. This fixes wildcard event > adding like below case; > > = > # perf probe -x /lib64/libc-2.25.so malloc* > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > Error: Failed to add events. > = > > This failure was caused by a versioned suffix symbol. > With this fix, perf probe automatically cuts the > suffix after @ as below. > > = > # ./perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) Thanks for working on this! I'm now going over it, and one thing I noticed was that the (on malloc*) on all the entries matched by that wildcard, can I suggest that you expand it there as well? I.e. probe_libc:malloc_set_state (on malloc_set_state in /usr/lib64/libc-2.25.so) This way we'll now when aliases are used, and also for the versioning case, i.e. to which version is a probe pointing? See also Paul Clarke's question and suggestion, which I agree, i.e. instead of chopping off the version, just replace the chars with valid ones or better, do what Paul suggests, be more flexible in interpreting @, i.e. if it is a number and/or fails to point to any file, interpret it as versioning. - Arnaldo > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > = > > Signed-off-by: Masami Hiramatsu> Reported-by: Arnaldo Carvalho de Melo > Reported-by: bhargavb > --- > tools/perf/util/probe-event.c |4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > index c0067950e56f..74435fb7ab7f 100644 > --- a/tools/perf/util/probe-event.c > +++ b/tools/perf/util/probe-event.c > @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, > const char *base, > if (!nbase) > return -ENOMEM; > > - /* Cut off the dot suffixes (e.g. .const, .isra)*/ > - p = strchr(nbase, '.'); > + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ > + p = strpbrk(nbase, ".@"); > if (p && p != nbase) > *p = '\0'; >
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Em Thu, Dec 07, 2017 at 04:20:28PM +0900, Masami Hiramatsu escreveu: > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > automatic generated event name. This fixes wildcard event > adding like below case; > > = > # perf probe -x /lib64/libc-2.25.so malloc* > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > Error: Failed to add events. > = > > This failure was caused by a versioned suffix symbol. > With this fix, perf probe automatically cuts the > suffix after @ as below. > > = > # ./perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) Thanks for working on this! I'm now going over it, and one thing I noticed was that the (on malloc*) on all the entries matched by that wildcard, can I suggest that you expand it there as well? I.e. probe_libc:malloc_set_state (on malloc_set_state in /usr/lib64/libc-2.25.so) This way we'll now when aliases are used, and also for the versioning case, i.e. to which version is a probe pointing? See also Paul Clarke's question and suggestion, which I agree, i.e. instead of chopping off the version, just replace the chars with valid ones or better, do what Paul suggests, be more flexible in interpreting @, i.e. if it is a number and/or fails to point to any file, interpret it as versioning. - Arnaldo > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > = > > Signed-off-by: Masami Hiramatsu > Reported-by: Arnaldo Carvalho de Melo > Reported-by: bhargavb > --- > tools/perf/util/probe-event.c |4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c > index c0067950e56f..74435fb7ab7f 100644 > --- a/tools/perf/util/probe-event.c > +++ b/tools/perf/util/probe-event.c > @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, > const char *base, > if (!nbase) > return -ENOMEM; > > - /* Cut off the dot suffixes (e.g. .const, .isra)*/ > - p = strchr(nbase, '.'); > + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ > + p = strpbrk(nbase, ".@"); > if (p && p != nbase) > *p = '\0'; >
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > automatic generated event name. This fixes wildcard event > adding like below case; > > = > # perf probe -x /lib64/libc-2.25.so malloc* > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > Error: Failed to add events. > = > > This failure was caused by a versioned suffix symbol. > With this fix, perf probe automatically cuts the > suffix after @ as below. > > = > # ./perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > = I think this will still fall over for a case where there are multiple versions of the same base symbol, like: $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' 00134430 T sched_getaffinity@GLIBC_2.3.3 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 Should we retain the versioning string in some form? "sched_getaffinity--GLIBC_2.3.4"? Should we instead interpret the '@' symbol more flexibly, so maybe first assume it is a version string, and if not found, try to see if it's a valid "@SRC" specification? PC
Re: [PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
On 12/07/2017 01:20 AM, Masami Hiramatsu wrote: > Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from > automatic generated event name. This fixes wildcard event > adding like below case; > > = > # perf probe -x /lib64/libc-2.25.so malloc* > Internal error: "malloc_get_state@GLIBC_2" is wrong event name. > Error: Failed to add events. > = > > This failure was caused by a versioned suffix symbol. > With this fix, perf probe automatically cuts the > suffix after @ as below. > > = > # ./perf probe -x /lib64/libc-2.25.so malloc* > Added new events: > probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) > probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) > > You can now use it in all perf tools, such as: > > perf record -e probe_libc:malloc_set_state -aR sleep 1 > > = I think this will still fall over for a case where there are multiple versions of the same base symbol, like: $ nm /lib64/libc.so.6 | egrep ' sched_getaffinity' 00134430 T sched_getaffinity@GLIBC_2.3.3 000dcf00 T sched_getaffinity@@GLIBC_2.3.4 Should we retain the versioning string in some form? "sched_getaffinity--GLIBC_2.3.4"? Should we instead interpret the '@' symbol more flexibly, so maybe first assume it is a version string, and if not found, try to see if it's a valid "@SRC" specification? PC
[PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from automatic generated event name. This fixes wildcard event adding like below case; = # perf probe -x /lib64/libc-2.25.so malloc* Internal error: "malloc_get_state@GLIBC_2" is wrong event name. Error: Failed to add events. = This failure was caused by a versioned suffix symbol. With this fix, perf probe automatically cuts the suffix after @ as below. = # ./perf probe -x /lib64/libc-2.25.so malloc* Added new events: probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc_set_state -aR sleep 1 = Signed-off-by: Masami HiramatsuReported-by: Arnaldo Carvalho de Melo Reported-by: bhargavb --- tools/perf/util/probe-event.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index c0067950e56f..74435fb7ab7f 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, const char *base, if (!nbase) return -ENOMEM; - /* Cut off the dot suffixes (e.g. .const, .isra)*/ - p = strchr(nbase, '.'); + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ + p = strpbrk(nbase, ".@"); if (p && p != nbase) *p = '\0';
[PATCH v2 2/5] perf-probe: Cut off the version suffix from event name
Cut off the version suffix (e.g. @GLIBC_2.2.5 etc.) from automatic generated event name. This fixes wildcard event adding like below case; = # perf probe -x /lib64/libc-2.25.so malloc* Internal error: "malloc_get_state@GLIBC_2" is wrong event name. Error: Failed to add events. = This failure was caused by a versioned suffix symbol. With this fix, perf probe automatically cuts the suffix after @ as below. = # ./perf probe -x /lib64/libc-2.25.so malloc* Added new events: probe_libc:malloc_printerr (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_consolidate (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_check (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_hook_ini (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc(on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_trim (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_usable_size (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_stats (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_info (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:mallochook (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_get_state (on malloc* in /usr/lib64/libc-2.25.so) probe_libc:malloc_set_state (on malloc* in /usr/lib64/libc-2.25.so) You can now use it in all perf tools, such as: perf record -e probe_libc:malloc_set_state -aR sleep 1 = Signed-off-by: Masami Hiramatsu Reported-by: Arnaldo Carvalho de Melo Reported-by: bhargavb --- tools/perf/util/probe-event.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index c0067950e56f..74435fb7ab7f 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -2584,8 +2584,8 @@ static int get_new_event_name(char *buf, size_t len, const char *base, if (!nbase) return -ENOMEM; - /* Cut off the dot suffixes (e.g. .const, .isra)*/ - p = strchr(nbase, '.'); + /* Cut off the dot suffixes (e.g. .const, .isra) and version suffixes */ + p = strpbrk(nbase, ".@"); if (p && p != nbase) *p = '\0';