diff options
Diffstat (limited to 'lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp')
-rw-r--r-- | lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp b/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp index f440cede201..9280ec43320 100644 --- a/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp +++ b/lld/lib/ReaderWriter/MachO/CompactUnwindPass.cpp @@ -337,11 +337,15 @@ private: << " has " << entriesInPage << " entries\n"); } while (pageStart < unwindInfos.size()); - // FIXME: we should also erase all compact-unwind atoms; their job is done. UnwindInfoAtom *unwind = new (_file.allocator()) UnwindInfoAtom(_archHandler, _file, _isBig, std::vector<uint32_t>(), personalities, pages, numLSDAs); mergedFile->addAtom(*unwind); + + // Finally, remove all __compact_unwind atoms now that we've processed them. + mergedFile->removeDefinedAtomsIf([](const DefinedAtom *atom) { + return atom->contentType() == DefinedAtom::typeCompactUnwindInfo; + }); } void collectCompactUnwindEntries( |