Project import generated by Copybara.
GitOrigin-RevId: 0acb173e07e155358594d3ce7b5f19e91bb9fec3
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 0b185b1..2ec0a32 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -230,33 +230,6 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Ehdr *ep,
return NULL;
}
-static int elf_read_program_header(Elf *elf, u64 vaddr, GElf_Phdr *phdr)
-{
- size_t i, phdrnum;
- u64 sz;
-
- if (elf_getphdrnum(elf, &phdrnum))
- return -1;
-
- for (i = 0; i < phdrnum; i++) {
- if (gelf_getphdr(elf, i, phdr) == NULL)
- return -1;
-
- if (phdr->p_type != PT_LOAD)
- continue;
-
- sz = max(phdr->p_memsz, phdr->p_filesz);
- if (!sz)
- continue;
-
- if (vaddr >= phdr->p_vaddr && (vaddr < phdr->p_vaddr + sz))
- return 0;
- }
-
- /* Not found any valid program header */
- return -1;
-}
-
static bool want_demangle(bool is_kernel_sym)
{
return is_kernel_sym ? symbol_conf.demangle_kernel : symbol_conf.demangle;
@@ -1118,7 +1091,6 @@ int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss,
sym.st_value);
used_opd = true;
}
-
/*
* When loading symbols in a data mapping, ABS symbols (which
* has a value of SHN_ABS in its st_shndx) failed at
@@ -1155,20 +1127,11 @@ int dso__load_sym(struct dso *dso, struct map *map, struct symsrc *syms_ss,
goto out_elf_end;
} else if ((used_opd && runtime_ss->adjust_symbols) ||
(!used_opd && syms_ss->adjust_symbols)) {
- GElf_Phdr phdr;
-
- if (elf_read_program_header(syms_ss->elf,
- (u64)sym.st_value, &phdr)) {
- pr_warning("%s: failed to find program header for "
- "symbol: %s st_value: %#" PRIx64 "\n",
- __func__, elf_name, (u64)sym.st_value);
- continue;
- }
pr_debug4("%s: adjusting symbol: st_value: %#" PRIx64 " "
- "p_vaddr: %#" PRIx64 " p_offset: %#" PRIx64 "\n",
- __func__, (u64)sym.st_value, (u64)phdr.p_vaddr,
- (u64)phdr.p_offset);
- sym.st_value -= phdr.p_vaddr - phdr.p_offset;
+ "sh_addr: %#" PRIx64 " sh_offset: %#" PRIx64 "\n", __func__,
+ (u64)sym.st_value, (u64)shdr.sh_addr,
+ (u64)shdr.sh_offset);
+ sym.st_value -= shdr.sh_addr - shdr.sh_offset;
}
demangled = demangle_sym(dso, kmodule, elf_name);