Lines Matching refs:kci

1615 static struct phdr_data *kcore_copy_info__addnew(struct kcore_copy_info *kci,  in kcore_copy_info__addnew()  argument
1622 list_add_tail(&p->node, &kci->phdrs); in kcore_copy_info__addnew()
1627 static void kcore_copy__free_phdrs(struct kcore_copy_info *kci) in kcore_copy__free_phdrs() argument
1631 list_for_each_entry_safe(p, tmp, &kci->phdrs, node) { in kcore_copy__free_phdrs()
1637 static struct sym_data *kcore_copy__new_sym(struct kcore_copy_info *kci, in kcore_copy__new_sym() argument
1644 list_add_tail(&s->node, &kci->syms); in kcore_copy__new_sym()
1650 static void kcore_copy__free_syms(struct kcore_copy_info *kci) in kcore_copy__free_syms() argument
1654 list_for_each_entry_safe(s, tmp, &kci->syms, node) { in kcore_copy__free_syms()
1663 struct kcore_copy_info *kci = arg; in kcore_copy__process_kallsyms() local
1669 if (!kci->first_module_symbol || start < kci->first_module_symbol) in kcore_copy__process_kallsyms()
1670 kci->first_module_symbol = start; in kcore_copy__process_kallsyms()
1671 if (start > kci->last_module_symbol) in kcore_copy__process_kallsyms()
1672 kci->last_module_symbol = start; in kcore_copy__process_kallsyms()
1676 if (!kci->first_symbol || start < kci->first_symbol) in kcore_copy__process_kallsyms()
1677 kci->first_symbol = start; in kcore_copy__process_kallsyms()
1679 if (!kci->last_symbol || start > kci->last_symbol) in kcore_copy__process_kallsyms()
1680 kci->last_symbol = start; in kcore_copy__process_kallsyms()
1683 kci->stext = start; in kcore_copy__process_kallsyms()
1688 kci->etext = start; in kcore_copy__process_kallsyms()
1692 if (is_entry_trampoline(name) && !kcore_copy__new_sym(kci, start)) in kcore_copy__process_kallsyms()
1698 static int kcore_copy__parse_kallsyms(struct kcore_copy_info *kci, in kcore_copy__parse_kallsyms() argument
1708 if (kallsyms__parse(kallsyms_filename, kci, in kcore_copy__parse_kallsyms()
1719 struct kcore_copy_info *kci = arg; in kcore_copy__process_modules() local
1721 if (!kci->first_module || start < kci->first_module) in kcore_copy__process_modules()
1722 kci->first_module = start; in kcore_copy__process_modules()
1727 static int kcore_copy__parse_modules(struct kcore_copy_info *kci, in kcore_copy__parse_modules() argument
1737 if (modules__parse(modules_filename, kci, in kcore_copy__parse_modules()
1744 static int kcore_copy__map(struct kcore_copy_info *kci, u64 start, u64 end, in kcore_copy__map() argument
1755 return kcore_copy_info__addnew(kci, s, len, offset) ? 0 : -1; in kcore_copy__map()
1760 struct kcore_copy_info *kci = data; in kcore_copy__read_map() local
1764 if (kcore_copy__map(kci, start, end, pgoff, kci->stext, kci->etext)) in kcore_copy__read_map()
1767 if (kcore_copy__map(kci, start, end, pgoff, kci->first_module, in kcore_copy__read_map()
1768 kci->last_module_symbol)) in kcore_copy__read_map()
1771 list_for_each_entry(sdat, &kci->syms, node) { in kcore_copy__read_map()
1774 if (kcore_copy__map(kci, start, end, pgoff, s, s + len)) in kcore_copy__read_map()
1781 static int kcore_copy__read_maps(struct kcore_copy_info *kci, Elf *elf) in kcore_copy__read_maps() argument
1783 if (elf_read_maps(elf, true, kcore_copy__read_map, kci) < 0) in kcore_copy__read_maps()
1789 static void kcore_copy__find_remaps(struct kcore_copy_info *kci) in kcore_copy__find_remaps() argument
1794 if (!kci->stext) in kcore_copy__find_remaps()
1798 kcore_copy__for_each_phdr(kci, p) { in kcore_copy__find_remaps()
1801 if (p->addr <= kci->stext && pend >= kci->stext) { in kcore_copy__find_remaps()
1813 kcore_copy__for_each_phdr(kci, p) { in kcore_copy__find_remaps()
1824 static void kcore_copy__layout(struct kcore_copy_info *kci) in kcore_copy__layout() argument
1829 kcore_copy__find_remaps(kci); in kcore_copy__layout()
1831 kcore_copy__for_each_phdr(kci, p) { in kcore_copy__layout()
1836 kci->phnum += 1; in kcore_copy__layout()
1839 kcore_copy__for_each_phdr(kci, p) { in kcore_copy__layout()
1847 static int kcore_copy__calc_maps(struct kcore_copy_info *kci, const char *dir, in kcore_copy__calc_maps() argument
1850 if (kcore_copy__parse_kallsyms(kci, dir)) in kcore_copy__calc_maps()
1853 if (kcore_copy__parse_modules(kci, dir)) in kcore_copy__calc_maps()
1856 if (kci->stext) in kcore_copy__calc_maps()
1857 kci->stext = round_down(kci->stext, page_size); in kcore_copy__calc_maps()
1859 kci->stext = round_down(kci->first_symbol, page_size); in kcore_copy__calc_maps()
1861 if (kci->etext) { in kcore_copy__calc_maps()
1862 kci->etext = round_up(kci->etext, page_size); in kcore_copy__calc_maps()
1863 } else if (kci->last_symbol) { in kcore_copy__calc_maps()
1864 kci->etext = round_up(kci->last_symbol, page_size); in kcore_copy__calc_maps()
1865 kci->etext += page_size; in kcore_copy__calc_maps()
1868 if (kci->first_module_symbol && in kcore_copy__calc_maps()
1869 (!kci->first_module || kci->first_module_symbol < kci->first_module)) in kcore_copy__calc_maps()
1870 kci->first_module = kci->first_module_symbol; in kcore_copy__calc_maps()
1872 kci->first_module = round_down(kci->first_module, page_size); in kcore_copy__calc_maps()
1874 if (kci->last_module_symbol) { in kcore_copy__calc_maps()
1875 kci->last_module_symbol = round_up(kci->last_module_symbol, in kcore_copy__calc_maps()
1877 kci->last_module_symbol += page_size; in kcore_copy__calc_maps()
1880 if (!kci->stext || !kci->etext) in kcore_copy__calc_maps()
1883 if (kci->first_module && !kci->last_module_symbol) in kcore_copy__calc_maps()
1886 if (kcore_copy__read_maps(kci, elf)) in kcore_copy__calc_maps()
1889 kcore_copy__layout(kci); in kcore_copy__calc_maps()
2016 struct kcore_copy_info kci = { .stext = 0, }; in kcore_copy() local
2021 INIT_LIST_HEAD(&kci.phdrs); in kcore_copy()
2022 INIT_LIST_HEAD(&kci.syms); in kcore_copy()
2036 if (kcore_copy__calc_maps(&kci, from_dir, kcore.elf)) in kcore_copy()
2042 if (kcore__copy_hdr(&kcore, &extract, kci.phnum)) in kcore_copy()
2046 gelf_fsize(extract.elf, ELF_T_PHDR, kci.phnum, EV_CURRENT); in kcore_copy()
2049 kcore_copy__for_each_phdr(&kci, p) { in kcore_copy()
2060 kcore_copy__for_each_phdr(&kci, p) { in kcore_copy()
2087 kcore_copy__free_phdrs(&kci); in kcore_copy()
2088 kcore_copy__free_syms(&kci); in kcore_copy()