[lld] r252790 - Add support for processing .eh_frame.
Rafael EspĂndola via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 8 13:20:51 PST 2016
>> + uint32_t ID = read32<E>(D.data() + 4);
>> + if (ID == 0) {
>> + // CIE
>> + Cie<ELFT> C(S, Index);
>> +
>> + StringRef Personality;
>> + if (HasReloc) {
>> + uint32_t SymIndex = RelI->getSymbol(Config->Mips64EL);
>> + SymbolBody &Body =
>> *S->getFile()->getSymbolBody(SymIndex)->repl();
>> + Personality = Body.getName();
>> + }
>> +
>> + std::pair<StringRef, StringRef> CieInfo(Entry, Personality);
>
>
> So, here, CIEs are uniquified by their contents and some symbol names. What
> is the actual rule? I want to know what it is intended to do for what.
>
One symbol name: the personality function. The information about a
frame is split into a fde and a cie. The cie contains information that
can be shared by multiple fdes. We can unify cie by content, as long
as we are careful to include which personality function that CIE uses.
See https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
for the format.
Cheers,
Rafael
More information about the llvm-commits
mailing list