OSDN Git Service

original
[gb-231r1-is01/Gingerbread_2.3.3_r1_IS01.git] / build / tools / soslim / common.c
1 #include <stdlib.h>
2 #include <common.h>
3 #include <debug.h>
4
5 void 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
16 void 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