@@ -642,8 +642,9 @@ static void do_sym_list(struct symbol_list *list)
DO_LIST(list, sym, do_symbol(sym));
}
-void dissect(struct symbol_list *list, struct reporter *rep)
+void dissect(struct reporter *rep, struct string_list *filelist)
{
reporter = rep;
- do_sym_list(list);
+
+ DO_LIST(filelist, file, do_sym_list(__sparse(file)));
}
@@ -32,6 +32,6 @@ static inline bool sym_is_local(struct symbol *sym)
return sym->kind == 'v' && !(sym->ctype.modifiers & MOD_TOPLEVEL);
}
-extern void dissect(struct symbol_list *, struct reporter *);
+extern void dissect(struct reporter *, struct string_list *);
#endif
@@ -1,7 +1,5 @@
#include "dissect.h"
-static unsigned dotc_stream;
-
static inline const char *show_mode(unsigned mode)
{
static char str[3];
@@ -119,15 +117,10 @@ int main(int argc, char **argv)
.r_symbol = r_symbol,
.r_member = r_member,
};
- struct string_list *filelist = NULL;
- char *file;
+ struct string_list *filelist = NULL;
sparse_initialize(argc, argv, &filelist);
-
- FOR_EACH_PTR(filelist, file) {
- dotc_stream = input_stream_nr;
- dissect(__sparse(file), &reporter);
- } END_FOR_EACH_PTR(file);
+ dissect(&reporter, filelist);
return 0;
}
This is more flexible. For example, we can change dissect() to inspect file_scope->symbols too without changing its callers. Signed-off-by: Oleg Nesterov <oleg@redhat.com> --- dissect.c | 5 +++-- dissect.h | 2 +- test-dissect.c | 11 ++--------- 3 files changed, 6 insertions(+), 12 deletions(-)