diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2012-08-06 13:41:20 +0900 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2012-08-09 16:26:33 -0300 |
commit | e5a1845fc0aeca85c98115980c3531129f87e18d (patch) | |
tree | f67ec3bfc5dc9ae6e2d89ad9b6493a873d4c8652 /tools/perf/util/map.c | |
parent | 166ccc9c244828da9214a0e7ba4d5dde6a26dcc1 (diff) | |
download | linux-stable-e5a1845fc0aeca85c98115980c3531129f87e18d.tar.gz linux-stable-e5a1845fc0aeca85c98115980c3531129f87e18d.tar.bz2 linux-stable-e5a1845fc0aeca85c98115980c3531129f87e18d.zip |
perf symbols: Split out util/symbol-elf.c
Factor out the dependency of ELF handling into separate symbol-elf.c
file. It is a preparation of building a minimalistic version perf tools
which doesn't depend on the elfutils.
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-3-git-send-email-namhyung@kernel.org
[ committer note: removed blank line at symbol-elf.c EOF ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/map.c')
-rw-r--r-- | tools/perf/util/map.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index cc33486ad9e2..115654c469c6 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c @@ -86,6 +86,25 @@ out_delete: return NULL; } +/* + * Constructor variant for modules (where we know from /proc/modules where + * they are loaded) and for vmlinux, where only after we load all the + * symbols we'll know where it starts and ends. + */ +struct map *map__new2(u64 start, struct dso *dso, enum map_type type) +{ + struct map *map = calloc(1, (sizeof(*map) + + (dso->kernel ? sizeof(struct kmap) : 0))); + if (map != NULL) { + /* + * ->end will be filled after we load all the symbols + */ + map__init(map, type, start, 0, 0, dso); + } + + return map; +} + void map__delete(struct map *self) { free(self); |