| From: Jiri Olsa <jolsa@kernel.org> |
| Date: Mon, 19 Mar 2018 09:29:01 +0100 |
| Subject: perf tools: Fix snprint warnings for gcc 8 |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 77f18153c080855e1c3fb520ca31a4e61530121d upstream. |
| |
| With gcc 8 we get new set of snprintf() warnings that breaks the |
| compilation, one example: |
| |
| tests/mem.c: In function ‘check’: |
| tests/mem.c:19:48: error: ‘%s’ directive output may be truncated writing \ |
| up to 99 bytes into a region of size 89 [-Werror=format-truncation=] |
| snprintf(failure, sizeof failure, "unexpected %s", out); |
| |
| The gcc docs says: |
| |
| To avoid the warning either use a bigger buffer or handle the |
| function's return value which indicates whether or not its output |
| has been truncated. |
| |
| Given that all these warnings are harmless, because the code either |
| properly fails due to uncomplete file path or we don't care for |
| truncated output at all, I'm changing all those snprintf() calls to |
| scnprintf(), which actually 'checks' for the snprint return value so the |
| gcc stays silent. |
| |
| Signed-off-by: Jiri Olsa <jolsa@kernel.org> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: David Ahern <dsahern@gmail.com> |
| Cc: Josh Poimboeuf <jpoimboe@redhat.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> |
| Link: http://lkml.kernel.org/r/20180319082902.4518-1-jolsa@kernel.org |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| [bwh: Backported to 3.16: Drop changes in tools/perf/tests/mem.c] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| tools/perf/builtin-script.c | 22 +++++++++++----------- |
| tools/perf/tests/attr.c | 4 ++-- |
| tools/perf/tests/mem.c | 2 +- |
| tools/perf/tests/pmu.c | 2 +- |
| tools/perf/util/cgroup.c | 2 +- |
| tools/perf/util/parse-events.c | 4 ++-- |
| tools/perf/util/pmu.c | 2 +- |
| 7 files changed, 19 insertions(+), 19 deletions(-) |
| |
| --- a/tools/perf/builtin-script.c |
| +++ b/tools/perf/builtin-script.c |
| @@ -1235,8 +1235,8 @@ static int list_available_scripts(const |
| return -1; |
| |
| for_each_lang(scripts_path, scripts_dir, lang_dirent) { |
| - snprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path, |
| - lang_dirent->d_name); |
| + scnprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path, |
| + lang_dirent->d_name); |
| lang_dir = opendir(lang_path); |
| if (!lang_dir) |
| continue; |
| @@ -1245,8 +1245,8 @@ static int list_available_scripts(const |
| script_root = get_script_root(script_dirent, REPORT_SUFFIX); |
| if (script_root) { |
| desc = script_desc__findnew(script_root); |
| - snprintf(script_path, MAXPATHLEN, "%s/%s", |
| - lang_path, script_dirent->d_name); |
| + scnprintf(script_path, MAXPATHLEN, "%s/%s", |
| + lang_path, script_dirent->d_name); |
| read_script_info(desc, script_path); |
| free(script_root); |
| } |
| @@ -1282,7 +1282,7 @@ static int check_ev_match(char *dir_name |
| int match, len; |
| FILE *fp; |
| |
| - sprintf(filename, "%s/bin/%s-record", dir_name, scriptname); |
| + scnprintf(filename, MAXPATHLEN, "%s/bin/%s-record", dir_name, scriptname); |
| |
| fp = fopen(filename, "r"); |
| if (!fp) |
| @@ -1358,8 +1358,8 @@ int find_scripts(char **scripts_array, c |
| } |
| |
| for_each_lang(scripts_path, scripts_dir, lang_dirent) { |
| - snprintf(lang_path, MAXPATHLEN, "%s/%s", scripts_path, |
| - lang_dirent->d_name); |
| + scnprintf(lang_path, MAXPATHLEN, "%s/%s", scripts_path, |
| + lang_dirent->d_name); |
| #ifdef NO_LIBPERL |
| if (strstr(lang_path, "perl")) |
| continue; |
| @@ -1414,8 +1414,8 @@ static char *get_script_path(const char |
| return NULL; |
| |
| for_each_lang(scripts_path, scripts_dir, lang_dirent) { |
| - snprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path, |
| - lang_dirent->d_name); |
| + scnprintf(lang_path, MAXPATHLEN, "%s/%s/bin", scripts_path, |
| + lang_dirent->d_name); |
| lang_dir = opendir(lang_path); |
| if (!lang_dir) |
| continue; |
| @@ -1426,8 +1426,8 @@ static char *get_script_path(const char |
| free(__script_root); |
| closedir(lang_dir); |
| closedir(scripts_dir); |
| - snprintf(script_path, MAXPATHLEN, "%s/%s", |
| - lang_path, script_dirent->d_name); |
| + scnprintf(script_path, MAXPATHLEN, "%s/%s", |
| + lang_path, script_dirent->d_name); |
| return strdup(script_path); |
| } |
| free(__script_root); |
| --- a/tools/perf/tests/attr.c |
| +++ b/tools/perf/tests/attr.c |
| @@ -147,8 +147,8 @@ static int run_dir(const char *d, const |
| if (verbose) |
| vcnt++; |
| |
| - snprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s", |
| - d, d, perf, vcnt, v); |
| + scnprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s", |
| + d, d, perf, vcnt, v); |
| |
| return system(cmd); |
| } |
| --- a/tools/perf/tests/pmu.c |
| +++ b/tools/perf/tests/pmu.c |
| @@ -95,7 +95,7 @@ static char *test_format_dir_get(void) |
| struct test_format *format = &test_formats[i]; |
| FILE *file; |
| |
| - snprintf(name, PATH_MAX, "%s/%s", dir, format->name); |
| + scnprintf(name, PATH_MAX, "%s/%s", dir, format->name); |
| |
| file = fopen(name, "w"); |
| if (!file) |
| --- a/tools/perf/util/cgroup.c |
| +++ b/tools/perf/util/cgroup.c |
| @@ -64,7 +64,7 @@ static int open_cgroup(char *name) |
| if (cgroupfs_find_mountpoint(mnt, PATH_MAX + 1)) |
| return -1; |
| |
| - snprintf(path, PATH_MAX, "%s/%s", mnt, name); |
| + scnprintf(path, PATH_MAX, "%s/%s", mnt, name); |
| |
| fd = open(path, O_RDONLY); |
| if (fd == -1) |
| --- a/tools/perf/util/parse-events.c |
| +++ b/tools/perf/util/parse-events.c |
| @@ -182,8 +182,8 @@ struct tracepoint_path *tracepoint_id_to |
| |
| for_each_event(sys_dirent, evt_dir, evt_dirent) { |
| |
| - snprintf(evt_path, MAXPATHLEN, "%s/%s/id", dir_path, |
| - evt_dirent->d_name); |
| + scnprintf(evt_path, MAXPATHLEN, "%s/%s/id", dir_path, |
| + evt_dirent->d_name); |
| fd = open(evt_path, O_RDONLY); |
| if (fd < 0) |
| continue; |
| --- a/tools/perf/util/pmu.c |
| +++ b/tools/perf/util/pmu.c |
| @@ -240,7 +240,7 @@ static int pmu_aliases_parse(char *dir, |
| if (len > 6 && !strcmp(name + len - 6, ".scale")) |
| continue; |
| |
| - snprintf(path, PATH_MAX, "%s/%s", dir, name); |
| + scnprintf(path, PATH_MAX, "%s/%s", dir, name); |
| |
| file = fopen(path, "r"); |
| if (!file) { |