Re: [PATCH perf/core 1/2] perf probe: Do not access kallsyms when analyzing user binaries

From: Arnaldo Carvalho de Melo
Date: Wed Sep 17 2014 - 16:59:45 EST


Em Wed, Sep 17, 2014 at 08:40:54AM +0000, Masami Hiramatsu escreveu:
> Do not access kallsyms to show available variables and
> show source lines in user binaries.
> This behavior always requires the root privilege when
> sysctl sets kernel.kptr_restrict=1, but we don't need
> it just for analyzing user binaries.

> +++ b/tools/perf/util/probe-event.c
> @@ -697,11 +697,11 @@ end:
> return ret;
> }
>
> -int show_line_range(struct line_range *lr, const char *module)
> +int show_line_range(struct line_range *lr, const char *module, bool user)
> {

make -C tools/perf build-test fails for the static build on:

acme@linux-goap:~/git/linux> cat /etc/os-release
NAME=openSUSE
VERSION="12.3 (Dartmouth)"
VERSION_ID="12.3"
PRETTY_NAME="openSUSE 12.3 (Dartmouth) (i586)"
ID=opensuse
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:opensuse:12.3"
acme@linux-goap:~/git/linux>

util/probe-event.c:824:5: error: conflicting types for 'show_line_range'
In file included from util/probe-event.c:45:0:
util/probe-event.h:131:12: note: previous declaration of
'show_line_range' was here
make[3]: *** [util/probe-event.o] Error 1
make[2]: *** [all] Error 2
test: test -x ./perf
make[1]: *** [make_static] Error 1
make: *** [build-test] Error 2
make: Leaving directory `/home/acme/git/linux/tools/perf'
acme@linux-goap:~/git/linux>

And on:

acme@ubuntu13:~/git/linux$ cat /etc/os-release
NAME="Ubuntu"
VERSION="13.10, Saucy Salamander"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 13.10"
VERSION_ID="13.10"
HOME_URL="http://www.ubuntu.com/";
SUPPORT_URL="http://help.ubuntu.com/";
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/";
acme@ubuntu13:~/git/linux$

CC util/probe-event.o
util/probe-event.c:824:5: error: conflicting types for âshow_line_rangeâ
int show_line_range(struct line_range *lr __maybe_unused,
^
In file included from util/probe-event.c:45:0:
util/probe-event.h:131:12: note: previous declaration of
âshow_line_rangeâ was here
extern int show_line_range(struct line_range *lr, const char *module,
^
make[3]: *** [util/probe-event.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [all] Error 2
test: test -x ./perf
make[1]: *** [make_static] Error 1
make: *** [build-test] Error 2
make: Leaving directory `/home/acme/git/linux/tools/perf'

---------------------------------------------------------------------

Probably because I had not installed needed DWARF support libraries and
you forgot to update this:

int show_line_range(struct line_range *lr __maybe_unused,
const char *module __maybe_unused)
{
pr_warning("Debuginfo-analysis is not supported.\n");
return -ENOSYS;
}


Fixing it up by adding the missing 'bool user'.

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/