Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 155726
b: refs/heads/master
c: 28ac909
h: refs/heads/master
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo authored and Peter Zijlstra committed Jul 22, 2009
1 parent a3dd21c commit f2fc1a1
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dfe5a50461db90fab901cb697eff0d3d2e9fd229
refs/heads/master: 28ac909b49a155856c957d080f8a796b3c1d1f3e
2 changes: 1 addition & 1 deletion trunk/tools/perf/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ BUILTIN_OBJS += builtin-stat.o
BUILTIN_OBJS += builtin-top.o

PERFLIBS = $(LIB_FILE)
EXTLIBS =
EXTLIBS = -lbfd

#
# Platform specific tweaks
Expand Down
21 changes: 19 additions & 2 deletions trunk/tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@
#include <libelf.h>
#include <gelf.h>
#include <elf.h>
#include <bfd.h>

const char *sym_hist_filter;

#ifndef DMGL_PARAMS
#define DMGL_PARAMS (1 << 0) /* Include function args */
#define DMGL_ANSI (1 << 1) /* Include const, volatile, etc */
#endif

static struct symbol *symbol__new(u64 start, u64 len,
const char *name, unsigned int priv_size,
u64 obj_start, int verbose)
Expand Down Expand Up @@ -571,6 +577,8 @@ static int dso__load_sym(struct dso *self, int fd, const char *name,
NULL) != NULL);
elf_symtab__for_each_symbol(syms, nr_syms, index, sym) {
struct symbol *f;
const char *name;
char *demangled;
u64 obj_start;
struct section *section = NULL;
int is_label = elf_sym__is_label(&sym);
Expand Down Expand Up @@ -609,10 +617,19 @@ static int dso__load_sym(struct dso *self, int fd, const char *name,
goto out_elf_end;
}
}
/*
* We need to figure out if the object was created from C++ sources
* DWARF DW_compile_unit has this, but we don't always have access
* to it...
*/
name = elf_sym__name(&sym, symstrs);
demangled = bfd_demangle(NULL, name, DMGL_PARAMS | DMGL_ANSI);
if (demangled != NULL)
name = demangled;

f = symbol__new(sym.st_value, sym.st_size,
elf_sym__name(&sym, symstrs),
f = symbol__new(sym.st_value, sym.st_size, name,
self->sym_priv_size, obj_start, verbose);
free(demangled);
if (!f)
goto out_elf_end;

Expand Down

0 comments on commit f2fc1a1

Please sign in to comment.