summaryrefslogtreecommitdiffstats
path: root/tools/perf/util/symbol-elf.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2014-07-18 06:16:06 +0200
committerIngo Molnar <mingo@kernel.org>2014-07-18 06:16:06 +0200
commitec6dbcb7ade2a616675cbe3185cf299ee1615c9f (patch)
tree4953f7eca477e011aa9e16cdb236220ed9cec4be /tools/perf/util/symbol-elf.c
parentff2ebe46e15bd49d52b9c2f3fc77f3a9d94eac7b (diff)
parent0b437860818dc717f6a9e8a5089223a8414f5fff (diff)
downloadop-kernel-dev-ec6dbcb7ade2a616675cbe3185cf299ee1615c9f.zip
op-kernel-dev-ec6dbcb7ade2a616675cbe3185cf299ee1615c9f.tar.gz
Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo: User visible changes: o Support S/390 in 'perf kvm stat' (Alexander Yarygin) Developer Stuff: o Various fixes and prep work related to supporting Intel PT (Adrian Hunter) o Introduce multiple debug variables control (Jiri Olsa) o Add callchain and additional sample information for python scripts (Joseph Schuchart) Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/util/symbol-elf.c')
-rw-r--r--tools/perf/util/symbol-elf.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 6864661..cef8f42 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -49,7 +49,8 @@ static inline uint8_t elf_sym__type(const GElf_Sym *sym)
static inline int elf_sym__is_function(const GElf_Sym *sym)
{
- return elf_sym__type(sym) == STT_FUNC &&
+ return (elf_sym__type(sym) == STT_FUNC ||
+ elf_sym__type(sym) == STT_GNU_IFUNC) &&
sym->st_name != 0 &&
sym->st_shndx != SHN_UNDEF;
}
@@ -598,6 +599,8 @@ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name,
goto out_elf_end;
}
+ ss->is_64_bit = (gelf_getclass(elf) == ELFCLASS64);
+
ss->symtab = elf_section_by_name(elf, &ehdr, &ss->symshdr, ".symtab",
NULL);
if (ss->symshdr.sh_type != SHT_SYMTAB)
@@ -698,6 +701,7 @@ int dso__load_sym(struct dso *dso, struct map *map,
bool remap_kernel = false, adjust_kernel_syms = false;
dso->symtab_type = syms_ss->type;
+ dso->is_64_bit = syms_ss->is_64_bit;
dso->rel = syms_ss->ehdr.e_type == ET_REL;
/*
OpenPOWER on IntegriCloud