Update "struct dso" to include new member "text_end".
This new field will represent the offset for end of text
section for a dso. This value is derived as:
sh_size (Size of section in byes) + sh_offset (Section file
offst) of the elf header for text.

Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com>
---
 tools/perf/util/dso.h        | 1 +
 tools/perf/util/symbol-elf.c | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/dso.h b/tools/perf/util/dso.h
index b41c9782c754..70fe0fe69bef 100644
--- a/tools/perf/util/dso.h
+++ b/tools/perf/util/dso.h
@@ -181,6 +181,7 @@ struct dso {
        u8               rel;
        struct build_id  bid;
        u64              text_offset;
+       u64              text_end;
        const char       *short_name;
        const char       *long_name;
        u16              long_name_len;
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index 8bd466d1c2bd..252d26a59e64 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -1512,8 +1512,10 @@ dso__load_sym_internal(struct dso *dso, struct map *map, 
struct symsrc *syms_ss,
        }
 
        if (elf_section_by_name(runtime_ss->elf, &runtime_ss->ehdr, &tshdr,
-                               ".text", NULL))
+                               ".text", NULL)) {
                dso->text_offset = tshdr.sh_addr - tshdr.sh_offset;
+               dso->text_end = tshdr.sh_offset + tshdr.sh_size;
+       }
 
        if (runtime_ss->opdsec)
                opddata = elf_rawdata(runtime_ss->opdsec, NULL);
-- 
2.31.1

Reply via email to