perf symbols: Introduce symbol__elf_init()
authorNamhyung Kim <namhyung.kim@lge.com>
Mon, 6 Aug 2012 04:41:19 +0000 (13:41 +0900)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 9 Aug 2012 19:19:14 +0000 (16:19 -0300)
The symbol__elf_init() is for initializing internal libelf data
structure and getting rid of its dependency outside of ELF/symboling
handling code.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1344228082-15569-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-buildid-list.c
tools/perf/util/symbol.c
tools/perf/util/symbol.h

index 6b2bcfbde150870ce25de5d037de00246caa2730..7d6842826a0cfb230f2d9aaef5e7709e215721cf 100644 (file)
@@ -16,8 +16,6 @@
 #include "util/session.h"
 #include "util/symbol.h"
 
-#include <libelf.h>
-
 static const char *input_name;
 static bool force;
 static bool show_kernel;
@@ -71,7 +69,7 @@ static int perf_session__list_build_ids(void)
 {
        struct perf_session *session;
 
-       elf_version(EV_CURRENT);
+       symbol__elf_init();
 
        session = perf_session__new(input_name, O_RDONLY, force, false,
                                    &build_id__mark_dso_hit_ops);
index 8b63b678e127ba5253477db6c65355e28ae49e66..a61fec4518daae107e4b2f76937f57fd670eed94 100644 (file)
@@ -1453,6 +1453,11 @@ out_close:
        return err;
 }
 
+void symbol__elf_init(void)
+{
+       elf_version(EV_CURRENT);
+}
+
 static bool dso__build_id_equal(const struct dso *dso, u8 *build_id)
 {
        return memcmp(dso->build_id, build_id, sizeof(dso->build_id)) == 0;
@@ -2754,7 +2759,8 @@ int symbol__init(void)
 
        symbol_conf.priv_size = ALIGN(symbol_conf.priv_size, sizeof(u64));
 
-       elf_version(EV_CURRENT);
+       symbol__elf_init();
+
        if (symbol_conf.sort_by_name)
                symbol_conf.priv_size += (sizeof(struct symbol_name_rb_node) -
                                          sizeof(struct symbol));
index 1fe733a1e21f2acb31282c9df562b34b0a03346f..355993d3abbf0dbc4645c9985dfb8e19da322bcb 100644 (file)
@@ -309,6 +309,7 @@ void machines__destroy_guest_kernel_maps(struct rb_root *machines);
 
 int symbol__init(void);
 void symbol__exit(void);
+void symbol__elf_init(void);
 size_t symbol__fprintf_symname_offs(const struct symbol *sym,
                                    const struct addr_location *al, FILE *fp);
 size_t symbol__fprintf_symname(const struct symbol *sym, FILE *fp);