@@ -2,6 +2,7 @@
SPDX-License-Identifier: GPL-2.0-only
Copyright (C) 2007 Arnaldo Carvalho de Melo <acme@redhat.com>
+ Copyright (c) 2022, Oracle and/or its affiliates.
*/
@@ -207,13 +208,20 @@ Elf_Scn *elf_section_by_name(Elf *elf, GElf_Shdr *shp, const char *name, size_t
return sec;
}
-Elf_Scn *elf_section_by_idx(Elf *elf, GElf_Shdr *shp, int idx)
+Elf_Scn *elf_section_by_idx(Elf *elf, GElf_Shdr *shp, int idx, const char **name_out)
{
Elf_Scn *sec;
+ size_t str_idx;
sec = elf_getscn(elf, idx);
if (sec)
gelf_getshdr(sec, shp);
+
+ if (name_out) {
+ if (elf_getshdrstrndx(elf, &str_idx))
+ return NULL;
+ *name_out = elf_strptr(elf, str_idx, shp->sh_name);
+ }
return sec;
}
@@ -328,7 +328,7 @@ void *zalloc(const size_t size);
Elf_Scn *elf_section_by_name(Elf *elf, GElf_Shdr *shp, const char *name, size_t *index);
-Elf_Scn *elf_section_by_idx(Elf *elf, GElf_Shdr *shp, int idx);
+Elf_Scn *elf_section_by_idx(Elf *elf, GElf_Shdr *shp, int idx, const char **name_out);
#ifndef SHT_GNU_ATTRIBUTES
/* Just a way to check if we're using an old elfutils version */
Signed-off-by: Stephen Brennan <stephen.s.brennan@oracle.com> --- dutil.c | 10 +++++++++- dutil.h | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-)