blob: b90cf419944477208e01b7d23c841c03f98362d3 [file] [log] [blame]
The Android Open Source Project88b60792009-03-03 19:28:42 -08001#include <stdlib.h>
2#include <common.h>
3#include <debug.h>
4
5void map_over_sections(Elf *elf,
6 section_match_fn_t match,
7 void *user_data)
8{
9 Elf_Scn* section = NULL;
10 while ((section = elf_nextscn(elf, section)) != NULL) {
11 if (match(elf, section, user_data))
12 return;
13 }
14}
15
16void map_over_segments(Elf *elf,
17 segment_match_fn_t match,
18 void *user_data)
19{
20 Elf32_Ehdr *ehdr;
21 Elf32_Phdr *phdr;
22 int index;
23
24 ehdr = elf32_getehdr(elf);
25 phdr = elf32_getphdr(elf);
26
27 INFO("Scanning over %d program segments...\n",
28 ehdr->e_phnum);
29
30 for (index = ehdr->e_phnum; index; index--) {
31 if (match(elf, phdr++, user_data))
32 return;
33 }
34}
35