@@ -1701,10 +1701,11 @@ int kcore_copy(const char *from_dir, const char *to_dir)
1701
1701
struct kcore kcore ;
1702
1702
struct kcore extract ;
1703
1703
int idx = 0 , err = -1 ;
1704
- off_t offset , sz , modules_offset = 0 ;
1704
+ off_t offset , sz ;
1705
1705
struct kcore_copy_info kci = { .stext = 0 , };
1706
1706
char kcore_filename [PATH_MAX ];
1707
1707
char extract_filename [PATH_MAX ];
1708
+ struct phdr_data * p ;
1708
1709
1709
1710
INIT_LIST_HEAD (& kci .phdrs );
1710
1711
@@ -1733,29 +1734,23 @@ int kcore_copy(const char *from_dir, const char *to_dir)
1733
1734
gelf_fsize (extract .elf , ELF_T_PHDR , kci .phnum , EV_CURRENT );
1734
1735
offset = round_up (offset , page_size );
1735
1736
1736
- if (kcore__add_phdr (& extract , idx ++ , offset , kci .kernel_map .addr ,
1737
- kci .kernel_map .len ))
1738
- goto out_extract_close ;
1737
+ kcore_copy__for_each_phdr (& kci , p ) {
1738
+ off_t offs = p -> rel + offset ;
1739
1739
1740
- if (kci .modules_map .addr ) {
1741
- modules_offset = offset + kci .kernel_map .len ;
1742
- if (kcore__add_phdr (& extract , idx , modules_offset ,
1743
- kci .modules_map .addr , kci .modules_map .len ))
1740
+ if (kcore__add_phdr (& extract , idx ++ , offs , p -> addr , p -> len ))
1744
1741
goto out_extract_close ;
1745
1742
}
1746
1743
1747
1744
sz = kcore__write (& extract );
1748
1745
if (sz < 0 || sz > offset )
1749
1746
goto out_extract_close ;
1750
1747
1751
- if (copy_bytes (kcore .fd , kci .kernel_map .offset , extract .fd , offset ,
1752
- kci .kernel_map .len ))
1753
- goto out_extract_close ;
1748
+ kcore_copy__for_each_phdr (& kci , p ) {
1749
+ off_t offs = p -> rel + offset ;
1754
1750
1755
- if (modules_offset && copy_bytes (kcore .fd , kci .modules_map .offset ,
1756
- extract .fd , modules_offset ,
1757
- kci .modules_map .len ))
1758
- goto out_extract_close ;
1751
+ if (copy_bytes (kcore .fd , p -> offset , extract .fd , offs , p -> len ))
1752
+ goto out_extract_close ;
1753
+ }
1759
1754
1760
1755
if (kcore_copy__compare_file (from_dir , to_dir , "modules" ))
1761
1756
goto out_extract_close ;
0 commit comments