perf data convert: Include config.h header
Jiri Olsa
reviewerPATCH 1/2 perf data convert: Include config.h header
otherwise some compiler might scream:
$ make LIBBABELTRACE_DIR=/opt/libbabeltrace/ LIBBABELTRACE=1
BUILD: Doing 'make -j4' parallel build
CC util/data-convert-bt.o
util/data-convert-bt.c: In function ‘convert__config’:
util/data-convert-bt.c:1299:19: error: implicit declaration of function ‘perf_config_u64’ [-Werror=implicit-function-declaration]
c->queue_size = perf_config_u64(var, value);
...--- tools/perf/util/data-convert-bt.c | 1 + 1 file changed, 1 insertion(+)
tools/perf/util/data-convert-bt.c +1 -0
@@ -26,6 +26,7 @@#include "evlist.h" #include "evsel.h" #include "machine.h" +#include "config.h" #define pr_N (n, fmt, ...) \ eprintf(n, debug_data_convert, fmt, ##__VA_ARGS__)
Signature · 1 line
2.4.11
Jiri Olsa
reviewerPATCH 2/2 perf tools: Use proper dso name for is_regular_file
From: Jiri Olsa <[email protected]>
Marc reported use of uninitialized memory:
Quoted 38 lines
In commit "
403567217d3fperf symbols: Do not read symbols/data from device files" a check to uninitialzied memory was added. This leads to the following valgrind output:==24515== Syscall param
stat(file_name)points to uninitialised byte(s)==24515== at 0x75B26D5: _xstat (in /lib/x86_64-linux-gnu/libc-2.22.so) ==24515== by 0x4E548D: stat (stat.h:454) ==24515== by 0x4E548D: is_regular_file (util.c:687) ==24515== by 0x4A5BEE: dso__load (symbol.c:1435) ==24515== by 0x4BB1AE: map__load (map.c:289) ==24515== by 0x4BB1AE: map__find_symbol (map.c:333) ==24515== by 0x4835B3: thread__find_addr_location (event.c:1300) ==24515== by 0x4B5342: add_callchain_ip (machine.c:1652) ==24515== by 0x4B5342: thread__resolve_callchain_sample (machine.c:1906) ==24515== by 0x4B9E7D: thread__resolve_callchain (machine.c:1958) ==24515== by 0x441B3E: process_event (builtin-script.c:795) ==24515== by 0x441B3E: process_sample_event (builtin-script.c:920) ==24515== by 0x4BEE29: perf_evlist__deliver_sample (session.c:1192) ==24515== by 0x4BEE29: machines__deliver_event (session.c:1229) ==24515== by 0x4BF770: perf_session__deliver_event (session.c:1286) ==24515== by 0x4BF770: ordered_events__deliver_event (session.c:114) ==24515== by 0x4C1D17: __ordered_events__flush (ordered-events.c:207) ==24515== by 0x4C1D17: ordered_events__flush.part.3 (ordered-events.c:274) ==24515== by 0x4BF44C: perf_session__process_user_event (session.c:1325) ==24515== by 0x4BF44C: perf_session__process_event (session.c:1451) ==24515== Address 0x807c6a0 is 0 bytes inside a block of size 4,096 alloc'd ==24515== at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==24515== by 0x4A5BCB: dso__load (symbol.c:1421) ==24515== by 0x4BB1AE: map__load (map.c:289) ==24515== by 0x4BB1AE: map__find_symbol (map.c:333) ==24515== by 0x4835B3: thread__find_addr_location (event.c:1300) ==24515== by 0x4B5342: add_callchain_ip (machine.c:1652) ==24515== by 0x4B5342: thread__resolve_callchain_sample (machine.c:1906) ==24515== by 0x4B9E7D: thread__resolve_callchain (machine.c:1958) ==24515== by 0x441B3E: process_event (builtin-script.c:795) ==24515== by 0x441B3E: process_sample_event (builtin-script.c:920) ==24515== by 0x4BEE29: perf_evlist__deliver_sample (session.c:1192) ==24515== by 0x4BEE29: machines__deliver_event (session.c:1229)
Quoted 8 lines
==24515== by 0x4BF770: perf_session__deliver_event (session.c:1286) ==24515== by 0x4BF770: ordered_events__deliver_event (session.c:114) ==24515== by 0x4C1D17: __ordered_events__flush (ordered-events.c:207) ==24515== by 0x4C1D17: ordered_events__flush.part.3 (ordered-events.c:274) ==24515== by 0x4BF44C: perf_session__process_user_event (session.c:1325) ==24515== by 0x4BF44C: perf_session__process_event (session.c:1451) ==24515== by 0x4C0EAC: __perf_session__process_events (session.c:1804) ==24515== by 0x4C0EAC: perf_session__process_events (session.c:1858)
The reason was a typo that passed global 'name' variable as is_regular_file argument instead dso->long_name.
--- tools/perf/util/symbol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/util/symbol.c +1 -1
@@ -1430,7 +1430,7 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)* Read the build id if possible. This is required for * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work */ -if (is_regular_file (name) && +if (is_regular_file (dso->long_name) &&filename__read_build_id (dso->long_name, build_id,BUILD_ID_SIZE ) >0 )dso__set_build_id (dso, build_id);
Signature · 1 line
2.4.11
tip-bot for Jiri Olsa
merge bot[tip:perf/core] perf symbols: Use proper dso name for is_regular_file
perf symbols: Use proper dso name for is_regular_file
Commit-ID: ed7b630b310775f3b6c0b360ede7a12cd8dff6fe Gitweb: http://git.kernel.org/tip/ed7b630b310775f3b6c0b360ede7a12cd8dff6fe Author: Jiri Olsa <[email protected]> AuthorDate: Fri, 24 Jun 2016 14:40:25 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 28 Jun 2016 10:54:54 -0300
perf symbols: Use proper dso name for is_regular_file
Marc reported use of uninitialized memory:
Quoted 38 lines
In commit "
403567217d3fperf symbols: Do not read symbols/data from device files" a check to uninitialzied memory was added. This leads to the following valgrind output:==24515== Syscall param
stat(file_name)points to uninitialised byte(s)==24515== at 0x75B26D5: _xstat (in /lib/x86_64-linux-gnu/libc-2.22.so) ==24515== by 0x4E548D: stat (stat.h:454) ==24515== by 0x4E548D: is_regular_file (util.c:687) ==24515== by 0x4A5BEE: dso__load (symbol.c:1435) ==24515== by 0x4BB1AE: map__load (map.c:289) ==24515== by 0x4BB1AE: map__find_symbol (map.c:333) ==24515== by 0x4835B3: thread__find_addr_location (event.c:1300) ==24515== by 0x4B5342: add_callchain_ip (machine.c:1652) ==24515== by 0x4B5342: thread__resolve_callchain_sample (machine.c:1906) ==24515== by 0x4B9E7D: thread__resolve_callchain (machine.c:1958) ==24515== by 0x441B3E: process_event (builtin-script.c:795) ==24515== by 0x441B3E: process_sample_event (builtin-script.c:920) ==24515== by 0x4BEE29: perf_evlist__deliver_sample (session.c:1192) ==24515== by 0x4BEE29: machines__deliver_event (session.c:1229) ==24515== by 0x4BF770: perf_session__deliver_event (session.c:1286) ==24515== by 0x4BF770: ordered_events__deliver_event (session.c:114) ==24515== by 0x4C1D17: __ordered_events__flush (ordered-events.c:207) ==24515== by 0x4C1D17: ordered_events__flush.part.3 (ordered-events.c:274) ==24515== by 0x4BF44C: perf_session__process_user_event (session.c:1325) ==24515== by 0x4BF44C: perf_session__process_event (session.c:1451) ==24515== Address 0x807c6a0 is 0 bytes inside a block of size 4,096 alloc'd ==24515== at 0x4C29C0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==24515== by 0x4A5BCB: dso__load (symbol.c:1421) ==24515== by 0x4BB1AE: map__load (map.c:289) ==24515== by 0x4BB1AE: map__find_symbol (map.c:333) ==24515== by 0x4835B3: thread__find_addr_location (event.c:1300) ==24515== by 0x4B5342: add_callchain_ip (machine.c:1652) ==24515== by 0x4B5342: thread__resolve_callchain_sample (machine.c:1906) ==24515== by 0x4B9E7D: thread__resolve_callchain (machine.c:1958) ==24515== by 0x441B3E: process_event (builtin-script.c:795) ==24515== by 0x441B3E: process_sample_event (builtin-script.c:920) ==24515== by 0x4BEE29: perf_evlist__deliver_sample (session.c:1192) ==24515== by 0x4BEE29: machines__deliver_event (session.c:1229)
Quoted 8 lines
==24515== by 0x4BF770: perf_session__deliver_event (session.c:1286) ==24515== by 0x4BF770: ordered_events__deliver_event (session.c:114) ==24515== by 0x4C1D17: __ordered_events__flush (ordered-events.c:207) ==24515== by 0x4C1D17: ordered_events__flush.part.3 (ordered-events.c:274) ==24515== by 0x4BF44C: perf_session__process_user_event (session.c:1325) ==24515== by 0x4BF44C: perf_session__process_event (session.c:1451) ==24515== by 0x4C0EAC: __perf_session__process_events (session.c:1804) ==24515== by 0x4C0EAC: perf_session__process_events (session.c:1858)
The reason was a typo that passed global 'name' variable as the is_regular_file argument instead dso->long_name.
--- tools/perf/util/symbol.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/util/symbol.c +1 -1
@@ -1430,7 +1430,7 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)* Read the build id if possible. This is required for * DSO_BINARY_TYPE__BUILDID_DEBUGINFO to work */ -if (is_regular_file (name) && +if (is_regular_file (dso->long_name) &&filename__read_build_id (dso->long_name, build_id,BUILD_ID_SIZE ) >0 )dso__set_build_id (dso, build_id);
You can add:
Thank you.
Quoted 28 lines · Jiri Olsa
otherwise some compiler might scream:
$ make LIBBABELTRACE_DIR=/opt/libbabeltrace/ LIBBABELTRACE=1 BUILD: Doing 'make -j4' parallel build CC util/data-convert-bt.o util/data-convert-bt.c: In function ‘convert__config’: util/data-convert-bt.c:1299:19: error: implicit declaration of function ‘perf_config_u64’ [-Werror=implicit-function-declaration] c->queue_size = perf_config_u64(var, value); ...Signed-off-by Jiri Olsa <[email protected]>--- tools/perf/util/data-convert-bt.c | 1 + 1 file changed, 1 insertion(+)tools/perf/util/data-convert-bt.c +1
-0@@ -26,6 +26,7 @@#include "evlist.h" #include "evsel.h" #include "machine.h" +#include "config.h" #define pr_N (n, fmt, ...) \ eprintf(n, debug_data_convert, fmt, ##__VA_ARGS__)
Arnaldo Carvalho de Melo
maintainerEm Sat, Jun 25, 2016 at 09:29:04AM +0800, Wangnan (F) escreveu:
Quoted 4 lines
You can add:
Fixes 41840d211c51 ("perf config: Move config declarations from
util/cache.htoutil/config.h")
Yeah, I'll do that, thanks for pointing it out!
- Arnaldo
Quoted 31 lines
Thank you.
Quoted 27 lines · Jiri Olsa
otherwise some compiler might scream:
$ make LIBBABELTRACE_DIR=/opt/libbabeltrace/ LIBBABELTRACE=1 BUILD: Doing 'make -j4' parallel build CC util/data-convert-bt.o util/data-convert-bt.c: In function ‘convert__config’: util/data-convert-bt.c:1299:19: error: implicit declaration of function ‘perf_config_u64’ [-Werror=implicit-function-declaration] c->queue_size = perf_config_u64(var, value); ...Signed-off-by Jiri Olsa <[email protected]>--- tools/perf/util/data-convert-bt.c | 1 + 1 file changed, 1 insertion(+)tools/perf/util/data-convert-bt.c +1
-0@@ -26,6 +26,7 @@#include "evlist.h" #include "evsel.h" #include "machine.h" +#include "config.h" #define pr_N (n, fmt, ...) \ eprintf(n, debug_data_convert, fmt, ##__VA_ARGS__)
tip-bot for Jiri Olsa
merge botperf data convert: Include config.h header
Commit-ID: f6c12a004c149a7b0ea1332fa715979888dd4695 Gitweb: http://git.kernel.org/tip/f6c12a004c149a7b0ea1332fa715979888dd4695 Author: Jiri Olsa <[email protected]> AuthorDate: Fri, 24 Jun 2016 14:40:24 +0200 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Tue, 28 Jun 2016 10:54:52 -0300
perf data convert: Include config.h header
Otherwise some compiler might scream:
$ make LIBBABELTRACE_DIR=/opt/libbabeltrace/ LIBBABELTRACE=1
BUILD: Doing 'make -j4' parallel build
CC util/data-convert-bt.o
util/data-convert-bt.c: In function ‘convert__config’:
util/data-convert-bt.c:1299:19: error: implicit declaration of function ‘perf_config_u64’ [-Werror=implicit-function-declaration]
c->queue_size = perf_config_u64(var, value);
...--- tools/perf/util/data-convert-bt.c | 1 + 1 file changed, 1 insertion(+)
tools/perf/util/data-convert-bt.c +1 -0
@@ -26,6 +26,7 @@#include "evlist.h" #include "evsel.h" #include "machine.h" +#include "config.h" #define pr_N (n, fmt, ...) \ eprintf(n, debug_data_convert, fmt, ##__VA_ARGS__)