diff options
Diffstat (limited to 'tools/apriori/source.c')
-rw-r--r-- | tools/apriori/source.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/apriori/source.c b/tools/apriori/source.c new file mode 100644 index 0000000000..69c57c7746 --- /dev/null +++ b/tools/apriori/source.c @@ -0,0 +1,18 @@ +#include <source.h> + +void find_section(source_t *source, Elf64_Addr address, + Elf_Scn **scn, + GElf_Shdr *shdr, + Elf_Data **data) +{ + range_t *range = find_range(source->sorted_sections, address); + FAILIF(NULL == range, + "Cannot match address %lld to any range in [%s]!\n", + address, + source->name); + *scn = (Elf_Scn *)range->user; + ASSERT(*scn); + FAILIF_LIBELF(NULL == gelf_getshdr(*scn, shdr), gelf_getshdr); + *data = elf_getdata(*scn, NULL); + FAILIF_LIBELF(NULL == *data, elf_getdata); +} |