diff options
Diffstat (limited to 'llvm/tools/llvm-objcopy/ELF/Object.cpp')
-rw-r--r-- | llvm/tools/llvm-objcopy/ELF/Object.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/tools/llvm-objcopy/ELF/Object.cpp b/llvm/tools/llvm-objcopy/ELF/Object.cpp index 2ceb479..8bb4bbb 100644 --- a/llvm/tools/llvm-objcopy/ELF/Object.cpp +++ b/llvm/tools/llvm-objcopy/ELF/Object.cpp @@ -112,7 +112,9 @@ void ELFSectionSizer<ELFT>::visit(RelocationSection &Sec) { template <class ELFT> void ELFSectionSizer<ELFT>::visit(GnuDebugLinkSection &Sec) {} -template <class ELFT> void ELFSectionSizer<ELFT>::visit(GroupSection &Sec) {} +template <class ELFT> void ELFSectionSizer<ELFT>::visit(GroupSection &Sec) { + Sec.Size = sizeof(Elf_Word) + Sec.GroupMembers.size() * sizeof(Elf_Word); +} template <class ELFT> void ELFSectionSizer<ELFT>::visit(SectionIndexSection &Sec) {} @@ -968,6 +970,12 @@ void GroupSection::finalize() { this->Link = SymTab->Index; } +Error GroupSection::removeSectionReferences( + bool AllowBrokenLinks, function_ref<bool(const SectionBase *)> ToRemove) { + llvm::erase_if(GroupMembers, ToRemove); + return Error::success(); +} + Error GroupSection::removeSymbols(function_ref<bool(const Symbol &)> ToRemove) { if (ToRemove(*Sym)) return createStringError(llvm::errc::invalid_argument, |