The filename__has_section() is to check if the given section name is in
the binary.  It'd be used for checking debug info for srcline.
Committer notes:
Added missing  __maybe_unused to the unused filename__has_section()
arguments in tools/perf/util/symbol-minimal.c.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20221215192817.2734573-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
        return NULL;
 }
 
+bool filename__has_section(const char *filename, const char *sec)
+{
+       int fd;
+       Elf *elf;
+       GElf_Ehdr ehdr;
+       GElf_Shdr shdr;
+       bool found = false;
+
+       fd = open(filename, O_RDONLY);
+       if (fd < 0)
+               return false;
+
+       elf = elf_begin(fd, PERF_ELF_C_READ_MMAP, NULL);
+       if (elf == NULL)
+               goto out;
+
+       if (gelf_getehdr(elf, &ehdr) == NULL)
+               goto elf_out;
+
+       found = !!elf_section_by_name(elf, &ehdr, &shdr, sec, NULL);
+
+elf_out:
+       elf_end(elf);
+out:
+       close(fd);
+       return found;
+}
+
 static int elf_read_program_header(Elf *elf, u64 vaddr, GElf_Phdr *phdr)
 {
        size_t i, phdrnum;
 
 {
        return NULL;
 }
+
+bool filename__has_section(const char *filename __maybe_unused, const char *sec __maybe_unused)
+{
+       return false;
+}
 
                                         u64 start, u64 size));
 int filename__read_debuglink(const char *filename, char *debuglink,
                             size_t size);
+bool filename__has_section(const char *filename, const char *sec);
 
 struct perf_env;
 int symbol__init(struct perf_env *env);