Page MenuHomePhabricator

[DebugInfo] UnwindTable::create() should not add empty rows to CFI unwind table

Authored by RamNalamothu on May 5 2021, 4:06 AM.



UnwindTable::parseRows() may return successfully if the CFIProgram has either
no CFI instructions or only DW_CFA_nop instructions and the UnwindRow return
argument will be empty. But currently, the callers are not checking for this case
which is leading to incorrect dumps in the unwind tables in such cases i.e.


Diff Detail

Event Timeline

RamNalamothu created this revision.May 5 2021, 4:06 AM
RamNalamothu requested review of this revision.May 5 2021, 4:06 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 5 2021, 4:06 AM
RamNalamothu edited the summary of this revision. (Show Details)May 5 2021, 4:45 AM


I found this case while working on

BTW, would appreciate if you could take a look at and Feel free to add others if they would be interested as well.

clayborg accepted this revision.May 5 2021, 11:25 AM

LGTM! Just had one nit code edit suggestion.


We can return early if we check if empty first to avoid a function call here.

This revision is now accepted and ready to land.May 5 2021, 11:25 AM

Made the suggested code changes.

RamNalamothu marked an inline comment as done.May 5 2021, 4:08 PM

Thank you.

Does this look good now for commit?

Handle the scenario when the CIE or FDE has only DW_CFA_nop instructions.

RamNalamothu edited the summary of this revision. (Show Details)May 6 2021, 7:58 AM
clayborg accepted this revision.May 7 2021, 11:08 AM

Yes, lgtm!