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