diff options
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r-- | linker/linker.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp index 10608f46f..a41ca091b 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -311,6 +311,10 @@ static void soinfo_free(soinfo* si) { } } + if (si->has_min_version(6) && si->get_gap_size()) { + munmap(reinterpret_cast<void*>(si->get_gap_start()), si->get_gap_size()); + } + TRACE("name %s: freeing soinfo @ %p", si->get_realpath(), si); if (!solist_remove_soinfo(si)) { @@ -599,6 +603,8 @@ class LoadTask { si_->load_bias = elf_reader.load_bias(); si_->phnum = elf_reader.phdr_count(); si_->phdr = elf_reader.loaded_phdr(); + si_->set_gap_start(elf_reader.gap_start()); + si_->set_gap_size(elf_reader.gap_size()); return true; } |