|
@@ -977,8 +977,9 @@ 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).
|
|
|
*/
|
|
|
-static int dso__synthesize_plt_symbols(struct dso *dso, struct map *map,
|
|
|
- symbol_filter_t filter)
|
|
|
+static int
|
|
|
+dso__synthesize_plt_symbols(struct dso *dso, char *name, struct map *map,
|
|
|
+ symbol_filter_t filter)
|
|
|
{
|
|
|
uint32_t nr_rel_entries, idx;
|
|
|
GElf_Sym sym;
|
|
@@ -993,10 +994,7 @@ static int dso__synthesize_plt_symbols(struct dso *dso, struct map *map,
|
|
|
char sympltname[1024];
|
|
|
Elf *elf;
|
|
|
int nr = 0, symidx, fd, err = 0;
|
|
|
- char name[PATH_MAX];
|
|
|
|
|
|
- snprintf(name, sizeof(name), "%s%s",
|
|
|
- symbol_conf.symfs, dso->long_name);
|
|
|
fd = open(name, O_RDONLY);
|
|
|
if (fd < 0)
|
|
|
goto out;
|
|
@@ -1703,8 +1701,9 @@ restart:
|
|
|
continue;
|
|
|
|
|
|
if (ret > 0) {
|
|
|
- int nr_plt = dso__synthesize_plt_symbols(dso, map,
|
|
|
- filter);
|
|
|
+ int nr_plt;
|
|
|
+
|
|
|
+ nr_plt = dso__synthesize_plt_symbols(dso, name, map, filter);
|
|
|
if (nr_plt > 0)
|
|
|
ret += nr_plt;
|
|
|
break;
|