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);