aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/llvm-utils.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2016-07-06 10:56:20 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-07-12 14:19:47 -0400
commitc8b5f2c96d1bf6cefcbe12f67dce0b892fe20512 (patch)
treee6f40aa67f1a3ea28c53bf74fc1d51c9c3ec74c2 /tools/perf/util/llvm-utils.c
parentffe3a28a8b90879c21acf7a1a8f5277785b05ff6 (diff)
tools: Introduce str_error_r()
The tools so far have been using the strerror_r() GNU variant, that returns a string, be it the buffer passed or something else. But that, besides being tricky in cases where we expect that the function using strerror_r() returns the error formatted in a provided buffer (we have to check if it returned something else and copy that instead), breaks the build on systems not using glibc, like Alpine Linux, where musl libc is used. So, introduce yet another wrapper, str_error_r(), that has the GNU interface, but uses the portable XSI variant of strerror_r(), so that users rest asured that the provided buffer is used and it is what is returned. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-d4t42fnf48ytlk8rjxs822tf@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/llvm-utils.c')
-rw-r--r--tools/perf/util/llvm-utils.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tools/perf/util/llvm-utils.c b/tools/perf/util/llvm-utils.c
index 40b6f7269cb4..282c30f6a51d 100644
--- a/tools/perf/util/llvm-utils.c
+++ b/tools/perf/util/llvm-utils.c
@@ -106,7 +106,7 @@ read_from_pipe(const char *cmd, void **p_buf, size_t *p_read_sz)
106 file = popen(cmd, "r"); 106 file = popen(cmd, "r");
107 if (!file) { 107 if (!file) {
108 pr_err("ERROR: unable to popen cmd: %s\n", 108 pr_err("ERROR: unable to popen cmd: %s\n",
109 strerror_r(errno, serr, sizeof(serr))); 109 str_error_r(errno, serr, sizeof(serr)));
110 return -EINVAL; 110 return -EINVAL;
111 } 111 }
112 112
@@ -140,7 +140,7 @@ read_from_pipe(const char *cmd, void **p_buf, size_t *p_read_sz)
140 140
141 if (ferror(file)) { 141 if (ferror(file)) {
142 pr_err("ERROR: error occurred when reading from pipe: %s\n", 142 pr_err("ERROR: error occurred when reading from pipe: %s\n",
143 strerror_r(errno, serr, sizeof(serr))); 143 str_error_r(errno, serr, sizeof(serr)));
144 err = -EIO; 144 err = -EIO;
145 goto errout; 145 goto errout;
146 } 146 }
@@ -382,7 +382,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
382 if (path[0] != '-' && realpath(path, abspath) == NULL) { 382 if (path[0] != '-' && realpath(path, abspath) == NULL) {
383 err = errno; 383 err = errno;
384 pr_err("ERROR: problems with path %s: %s\n", 384 pr_err("ERROR: problems with path %s: %s\n",
385 path, strerror_r(err, serr, sizeof(serr))); 385 path, str_error_r(err, serr, sizeof(serr)));
386 return -err; 386 return -err;
387 } 387 }
388 388
@@ -410,7 +410,7 @@ int llvm__compile_bpf(const char *path, void **p_obj_buf,
410 if (nr_cpus_avail <= 0) { 410 if (nr_cpus_avail <= 0) {
411 pr_err( 411 pr_err(
412"WARNING:\tunable to get available CPUs in this system: %s\n" 412"WARNING:\tunable to get available CPUs in this system: %s\n"
413" \tUse 128 instead.\n", strerror_r(errno, serr, sizeof(serr))); 413" \tUse 128 instead.\n", str_error_r(errno, serr, sizeof(serr)));
414 nr_cpus_avail = 128; 414 nr_cpus_avail = 128;
415 } 415 }
416 snprintf(nr_cpus_avail_str, sizeof(nr_cpus_avail_str), "%d", 416 snprintf(nr_cpus_avail_str, sizeof(nr_cpus_avail_str), "%d",