From c282093e3145711ba01e61c2c4b6ed88c047da00 Mon Sep 17 00:00:00 2001 From: Mike Galbraith Date: Wed, 23 Sep 2009 11:20:58 +0200 Subject: [PATCH] --- yaml --- r: 166439 b: refs/heads/master c: 508c4d0874acf8584787bbab7e4a3798e2834c1a h: refs/heads/master i: 166437: b9c5f9e8686e147e0308f4152a063fc63ef7cda1 166435: 9218ed605e1dd518f5340b55614a370fa5bc5a5e 166431: a1c70b351ca0a0c84db9adc27005ffdeeaba09bb v: v3 --- [refs] | 2 +- trunk/tools/perf/util/symbol.c | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 8acd19a4baa4..f68e2db28a12 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7d42896628202a551ad1107697cd215dc5fca099 +refs/heads/master: 508c4d0874acf8584787bbab7e4a3798e2834c1a diff --git a/trunk/tools/perf/util/symbol.c b/trunk/tools/perf/util/symbol.c index fd3d9c8e90fc..559fb06210f5 100644 --- a/trunk/tools/perf/util/symbol.c +++ b/trunk/tools/perf/util/symbol.c @@ -833,7 +833,7 @@ int dso__load_modules(struct dso *self, symbol_filter_t filter, int v) struct mod_dso *mods = mod_dso__new_dso("modules"); struct module *pos; struct rb_node *next; - int err; + int err, count = 0; err = mod_dso__load_modules(mods); @@ -852,14 +852,16 @@ int dso__load_modules(struct dso *self, symbol_filter_t filter, int v) break; next = rb_next(&pos->rb_node); + count += err; } if (err < 0) { mod_dso__delete_modules(mods); mod_dso__delete_self(mods); + return err; } - return err; + return count; } static inline void dso__fill_symbol_holes(struct dso *self) @@ -913,8 +915,15 @@ int dso__load_kernel(struct dso *self, const char *vmlinux, if (vmlinux) { err = dso__load_vmlinux(self, vmlinux, filter, v); - if (err > 0 && use_modules) - err = dso__load_modules(self, filter, v); + if (err > 0 && use_modules) { + int syms = dso__load_modules(self, filter, v); + + if (syms < 0) { + fprintf(stderr, "dso__load_modules failed!\n"); + return syms; + } + err += syms; + } } if (err <= 0)