diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-03-17 12:13:28 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-03-17 12:13:28 +0100 |
commit | 3b0d516463f8deb897a55cb81e9dbbe58a2490ed (patch) | |
tree | bc62418aa7da53595d76413466aab3bc1fcb2d32 /tools | |
parent | 7df2f32956cf0f1a45df38cd0e0fe0c3467580e8 (diff) | |
download | op-kernel-dev-3b0d516463f8deb897a55cb81e9dbbe58a2490ed.zip op-kernel-dev-3b0d516463f8deb897a55cb81e9dbbe58a2490ed.tar.gz |
perf probe: Fix !dwarf build
Fix the !drawf build.
This uses the existing NO_DWARF_SUPPORT mechanism we use for that,
but it's really fragile and needs a cleanup. (in a separate patch)
1) Such uses:
#ifndef NO_DWARF_SUPPORT
are double inverted logic a'la 'not not'. Instead the flag should
be called DWARF_SUPPORT.
2) Furthermore, assymetric #ifdef polluted code flow like:
if (need_dwarf)
#ifdef NO_DWARF_SUPPORT
die("Debuginfo-analysis is not supported");
#else /* !NO_DWARF_SUPPORT */
pr_debug("Some probes require debuginfo.\n");
fd = open_vmlinux();
is very fragile and not acceptable. Instead of that helper functions
should be created and the dwarf/no-dwarf logic should be separated more
cleanly.
3) Local variable #ifdefs like this:
#ifndef NO_DWARF_SUPPORT
int fd;
#endif
Are fragile as well and should be eliminated. Helper functions achieve
that too.
Cc: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <20100316220612.32050.33806.stgit@localhost6.localdomain6>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/probe-event.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 64dea6c..f333269 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c @@ -1012,8 +1012,10 @@ end_dwarf: if (!sym) die("Kernel symbol \'%s\' not found - probe not added.", tev->point.symbol); +#ifndef NO_DWARF_SUPPORT found: close(fd); +#endif return ntevs; } @@ -1172,10 +1174,13 @@ void show_line_range(struct line_range *lr) unsigned int l = 1; struct line_node *ln; FILE *fp; +#ifndef NO_DWARF_SUPPORT int fd, ret; +#endif /* Search a line range */ init_vmlinux(); +#ifndef NO_DWARF_SUPPORT fd = open_vmlinux(); if (fd < 0) die("Could not open debuginfo file."); @@ -1183,6 +1188,7 @@ void show_line_range(struct line_range *lr) if (ret <= 0) die("Source line is not found.\n"); close(fd); +#endif setup_pager(); |