[all-commits] [llvm/llvm-project] 999307: Handle overflow beyond the 127 common encodings limit
Greg McGary via All-commits
all-commits at lists.llvm.org
Sat Dec 19 14:54:57 PST 2020
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 99930719c66df9a8b67f3575d251b182c9cc8ee9
https://github.com/llvm/llvm-project/commit/99930719c66df9a8b67f3575d251b182c9cc8ee9
Author: Greg McGary <gkm at fb.com>
Date: 2020-12-19 (Sat, 19 Dec 2020)
Changed paths:
M lld/MachO/UnwindInfoSection.cpp
M lld/MachO/UnwindInfoSection.h
M lld/test/MachO/tools/generate-cfi-funcs.py
M lld/test/MachO/tools/validate-unwind-info.py
Log Message:
-----------
Handle overflow beyond the 127 common encodings limit
The common encodings table holds only 127 entries. The encodings index for compact entries is 8 bits wide, and indexes 127..255 are stored locally to each second-level page. Prior to this diff, lld would `fatal()` if encodings overflowed the 127 limit.
This diff populates a per-second-level-page encodings table as needed. When the per-page encodings table hits its limit, we must terminate the page. If such early termination would consume fewer entries than a regular (non-compact) encoding page, then we prefer the regular format.
Caveat: one reason the common-encoding table might overflow is because of DWARF debug-info references, which are not yet implemented and will come with a later diff.
Differential Revision: https://reviews.llvm.org/D93267
More information about the All-commits
mailing list