blob: 69c57c774654b3eeb25456e69c573c62366d97c4 [file] [log] [blame]
The Android Open Source Project88b60792009-03-03 19:28:42 -08001#include <source.h>
2
3void find_section(source_t *source, Elf64_Addr address,
4 Elf_Scn **scn,
5 GElf_Shdr *shdr,
6 Elf_Data **data)
7{
8 range_t *range = find_range(source->sorted_sections, address);
9 FAILIF(NULL == range,
10 "Cannot match address %lld to any range in [%s]!\n",
11 address,
12 source->name);
13 *scn = (Elf_Scn *)range->user;
14 ASSERT(*scn);
15 FAILIF_LIBELF(NULL == gelf_getshdr(*scn, shdr), gelf_getshdr);
16 *data = elf_getdata(*scn, NULL);
17 FAILIF_LIBELF(NULL == *data, elf_getdata);
18}