Re: [PATCH 29/66] tools lib traceevent: Use str_error_r()

From: Steven Rostedt
Date: Tue Jul 12 2016 - 19:11:20 EST


On Tue, 12 Jul 2016 19:40:04 -0300
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
>
> To make it portable to non-glibc systems, that follow the XSI variant
> instead of the GNU specific one that gets in place when _GNU_SOURCE is
> defined.
>
> Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Cc: David Ahern <dsahern@xxxxxxxxx>
> Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
> Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
> Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
> Cc: Wang Nan <wangnan0@xxxxxxxxxx>
> Link: http://lkml.kernel.org/n/tip-c1gn8x978qfop65m510wy43o@xxxxxxxxxxxxxx
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> ---
> tools/lib/traceevent/event-parse.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c
> index a8b6357d1ffe..3a7bd175f73c 100644
> --- a/tools/lib/traceevent/event-parse.c
> +++ b/tools/lib/traceevent/event-parse.c
> @@ -31,6 +31,7 @@
> #include <errno.h>
> #include <stdint.h>
> #include <limits.h>
> +#include <linux/string.h>
>
> #include <netinet/ip6.h>
> #include "event-parse.h"
> @@ -6131,12 +6132,7 @@ int pevent_strerror(struct pevent *pevent __maybe_unused,
> const char *msg;
>
> if (errnum >= 0) {
> - msg = strerror_r(errnum, buf, buflen);
> - if (msg != buf) {
> - size_t len = strlen(msg);
> - memcpy(buf, msg, min(buflen - 1, len));
> - *(buf + min(buflen - 1, len)) = '\0';
> - }
> + str_error_r(errnum, buf, buflen);
> return 0;

What library is used with this? When I port this over to trace-cmd
(which is still needed as I develop this there), it fails to build.
"undefined reference to str_error_r"

-- Steve

> }
>