Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 323684
b: refs/heads/master
c: a44f605
h: refs/heads/master
v: v3
  • Loading branch information
Cody P Schafer authored and Arnaldo Carvalho de Melo committed Aug 13, 2012
1 parent c2131f4 commit 66f0a61
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 25 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: 005f92947a0da7eb47b0f1ff611f8fc3d7ab4751
refs/heads/master: a44f605b2f6eadb771a052aa3a5eefb342b38a39
25 changes: 7 additions & 18 deletions trunk/tools/perf/util/symbol-elf.c
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ static Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
* And always look at the original dso, not at debuginfo packages, that
* have the PLT data stripped out (shdr_rel_plt.sh_type == SHT_NOBITS).
*/
int dso__synthesize_plt_symbols(struct dso *dso, char *name, struct map *map,
int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss, struct map *map,
symbol_filter_t filter)
{
uint32_t nr_rel_entries, idx;
Expand All @@ -181,21 +181,15 @@ int dso__synthesize_plt_symbols(struct dso *dso, char *name, struct map *map,
GElf_Ehdr ehdr;
char sympltname[1024];
Elf *elf;
int nr = 0, symidx, fd, err = 0;
int nr = 0, symidx, err = 0;

fd = open(name, O_RDONLY);
if (fd < 0)
goto out;

elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
if (elf == NULL)
goto out_close;
elf = ss->elf;
ehdr = ss->ehdr;

if (gelf_getehdr(elf, &ehdr) == NULL)
goto out_elf_end;
scn_dynsym = ss->dynsym;
shdr_dynsym = ss->dynshdr;
dynsym_idx = ss->dynsym_idx;

scn_dynsym = elf_section_by_name(elf, &ehdr, &shdr_dynsym,
".dynsym", &dynsym_idx);
if (scn_dynsym == NULL)
goto out_elf_end;

Expand Down Expand Up @@ -291,13 +285,8 @@ int dso__synthesize_plt_symbols(struct dso *dso, char *name, struct map *map,

err = 0;
out_elf_end:
elf_end(elf);
out_close:
close(fd);

if (err == 0)
return nr;
out:
pr_debug("%s: problems reading %s PLT info.\n",
__func__, dso->long_name);
return 0;
Expand Down
3 changes: 2 additions & 1 deletion trunk/tools/perf/util/symbol-minimal.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,8 @@ void symsrc__destroy(struct symsrc *ss)
close(ss->fd);
}

int dso__synthesize_plt_symbols(struct dso *dso __used, char *name __used,
int dso__synthesize_plt_symbols(struct dso *dso __used,
struct symsrc *ss __used,
struct map *map __used,
symbol_filter_t filter __used)
{
Expand Down
8 changes: 5 additions & 3 deletions trunk/tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1091,21 +1091,23 @@ int dso__load(struct dso *dso, struct map *map, symbol_filter_t filter)

ret = dso__load_sym(dso, map, &ss, filter, 0,
want_symtab);
symsrc__destroy(&ss);

/*
* Some people seem to have debuginfo files _WITHOUT_ debug
* info!?!?
*/
if (!ret)
if (!ret) {
symsrc__destroy(&ss);
continue;
}

if (ret > 0) {
int nr_plt;

nr_plt = dso__synthesize_plt_symbols(dso, name, map, filter);
nr_plt = dso__synthesize_plt_symbols(dso, &ss, map, filter);
if (nr_plt > 0)
ret += nr_plt;
symsrc__destroy(&ss);
break;
}
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/tools/perf/util/symbol.h
Original file line number Diff line number Diff line change
Expand Up @@ -370,8 +370,8 @@ ssize_t dso__data_read_addr(struct dso *dso, struct map *map,
int dso__test_data(void);
int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *ss,
symbol_filter_t filter, int kmodule, int want_symtab);
int dso__synthesize_plt_symbols(struct dso *dso, char *name, struct map *map,
symbol_filter_t filter);
int dso__synthesize_plt_symbols(struct dso *dso, struct symsrc *ss,
struct map *map, symbol_filter_t filter);

void symbols__insert(struct rb_root *symbols, struct symbol *sym);
void symbols__fixup_duplicate(struct rb_root *symbols);
Expand Down

0 comments on commit 66f0a61

Please sign in to comment.